カテゴリー
【シェルコマンドだけで極める!】SedとAwkによるCsvファイルの行・列の操作アレコレ
※ 当ページには【広告/PR】を含む場合があります。
2021/03/30
はじめに
シェルコマンドから行の挿入
$ cat << EOF > employee.csv
山下 モゲ雄,営業部,本社,3年
島田 フガ子,経理部,名古屋支部,15年
岡田 ピポ太,製造部,山口工場,8年
沢口 モフ代,人事部,本社,4年
銭形 ガメ吉,海外部,メキシコ支部,11年
EOF
最終行に挿入
$ a 行内容
$ sed -i '$ a 出川 ゴボ之,営業,大阪支部,1年' employee.csv
$ cat employee.csv
山下 モゲ雄,営業部,本社,3年
島田 フガ子,経理部,名古屋支部,15年
岡田 ピポ太,製造部,山口工場,8年
沢口 モフ代,人事部,本社,4年
銭形 ガメ吉,海外部,メキシコ支部,11年
出川 ゴボ之,営業,大阪支部,1年
-i
指定の行に挿入
行番号i 行内容
$ sed -i '3i 出川 ゴボ之,営業,大阪支部,1年' employee.csv
$ cat employee.csv
山下 モゲ雄,営業部,本社,3年
島田 フガ子,経理部,名古屋支部,15年
出川 ゴボ之,営業,大阪支部,1年
岡田 ピポ太,製造部,山口工場,8年
沢口 モフ代,人事部,本社,4年
銭形 ガメ吉,海外部,メキシコ支部,11年
3i
シェルコマンドから行の削除
指定の行を削除
$ sed -i '1d' employee.csv
$ cat employee.csv
島田 フガ子,経理部,名古屋支部,15年
岡田 ピポ太,製造部,山口工場,8年
沢口 モフ代,人事部,本社,4年
銭形 ガメ吉,海外部,メキシコ支部,11年
行数d
$ sed -i '4d' employee.csv
$ cat employee.csv
山下 モゲ雄,営業部,本社,3年
島田 フガ子,経理部,名古屋支部,15年
岡田 ピポ太,製造部,山口工場,8年
銭形 ガメ吉,海外部,メキシコ支部,11年
$
$ sed -i '$d' employee.csv
$ cat employee.csv
山下 モゲ雄,営業部,本社,3年
島田 フガ子,経理部,名古屋支部,15年
岡田 ピポ太,製造部,山口工場,8年
沢口 モフ代,人事部,本社,4年
指定の行範囲を削除
$ sed -i '2,4d' employee.csv
$ cat employee.csv
山下 モゲ雄,営業部,本社,3年
銭形 ガメ吉,海外部,メキシコ支部,11年
先頭行,終端行d
$
$ sed -i '3,$d' employee.csv
$ cat employee.csv
山下 モゲ雄,営業部,本社,3年
島田 フガ子,経理部,名古屋支部,15年
パターン検索による削除
/パターン/d
$ sed -i '/岡田/d' employee.csv
$ cat employee.csv
山下 モゲ雄,営業部,本社,3年
島田 フガ子,経理部,名古屋支部,15年
沢口 モフ代,人事部,本社,4年
銭形 ガメ吉,海外部,メキシコ支部,11年
$ sed -i '/本社/d' employee.csv
$ cat employee.csv
島田 フガ子,経理部,名古屋支部,15年
岡田 ピポ太,製造部,山口工場,8年
銭形 ガメ吉,海外部,メキシコ支部,11年
シェルコマンドから行の抽出
特定行の抽出
行数p
$ sed -n -i '4p' employee.csv
$ cat employee.csv
沢口 モフ代,人事部,本社,4年
$ sed -n -i '$p' employee.csv
$ cat employee.csv
銭形 ガメ吉,海外部,メキシコ支部,11年
範囲指定による抽出
先頭行,終端行p
$ sed -n -i '2,4p' employee.csv
$ cat employee.csv
島田 フガ子,経理部,名古屋支部,15年
岡田 ピポ太,製造部,山口工場,8年
沢口 モフ代,人事部,本社,4年
パターン検索による抽出
/パターン/p
$ sed -n -i '/支部/p' employee.csv
$ cat employee.csv
島田 フガ子,経理部,名古屋支部,15年
銭形 ガメ吉,海外部,メキシコ支部,11年
シェルコマンドから列の挿入
$ cat << EOF > add_employee.csv
山下 モゲ雄,25歳
島田 フガ子,42歳
岡田 ピポ太,30歳
沢口 モフ代,27歳
銭形 ガメ吉,34歳
EOF
$ awk -F "," '
BEGIN {
OFS=","
}
F == 0 {
open_arr[$1] = $2;
next;
}
{
if($1 in open_arr) {
print $1, open_arr[$1], $2, $3, $4;
}
}
' F=0 add_employee.csv F=1 employee.csv > combined.csv
$ cat combined.csv
#👇出力
山下 モゲ雄,25歳,営業部,本社,3年
島田 フガ子,42歳,経理部,名古屋支部,15年
岡田 ピポ太,30歳,製造部,山口工場,8年
沢口 モフ代,27歳,人事部,本社,4年
銭形 ガメ吉,34歳,海外部,メキシコ支部,11年
シェルコマンドから列の削除・範囲取り出し
$ awk -F"," '
BEGIN {
OFS=","
}
{
print $1, $3;
}
' employee.csv > trimmed.csv
$ cat trimmed.csv
#👇出力
山下 モゲ雄,本社
島田 フガ子,名古屋支部
岡田 ピポ太,山口工場
沢口 モフ代,本社
銭形 ガメ吉,メキシコ支部
まとめ
記事を書いた人
ナンデモ系エンジニア
主にAngularでフロントエンド開発することが多いです。 開発環境はLinuxメインで進めているので、シェルコマンドも多用しております。 コツコツとプログラミングするのが好きな人間です。
カテゴリー