sed

CSVファイルのヘッダーを削除

sedを使ってファイルの指定行の削除を行います。1行目にヘッダー情報が付いているCSVファイルなどから1行目だけを削除するようなシーンで活躍します。

指定ファイルの1行目を直接削除する
sed -i '1d' sample.csv
-- 対象ファイルの事前確認
$ cat sample.csv
no,name,price
1,みかん,120
2,りんご,300
3,いちご,230
4,ぶどう,450

-- 1行目を削除し標準出力
$ sed  '1d' sample.csv
1,みかん,120
2,りんご,300
3,いちご,230
4,ぶどう,450

-- ファイル自体への編集は行っていない
$ cat sample.csv
no,name,price
1,みかん,120
2,りんご,300
3,いちご,230
4,ぶどう,450

-- -iオプションをつけるとファイル自体を編集する
-- 標準出力もされない
$ sed  -i '1d' sample.csv

-- 1行目が削除されている事確認できる
$ cat sample.csv
1,みかん,120
2,りんご,300
3,いちご,230
4,ぶどう,450
対象ファイルをバックアップした後、指定行を削除する

-i.bakとすることでsample.csv.bakと言うファイル名でバックアップを作成した後編集が行われる

sed -i.bak '2,4d' sample.csv
-- 事前確認
$ ls -lt sample.csv*
-rw-r--r--. 1 oracle oinstall 64  3月  4 10:56 sample.csv
$ cat sample.csv
1,みかん,120
2,りんご,300
3,いちご,230
4,ぶどう,450

-- sample.csv.bakでバックアップを作成した上で
-- 2~4行目を削除する
-- 
$ sed -i.bak '2,4d' sample.csv

-- 削除されている事を確認する
$ cat sample.csv
1,みかん,120

-- バックアップファイルが作成されている事確認する
$ ls -lt sample.csv*
-rw-r--r--. 1 oracle oinstall 16  3月  4 10:57 sample.csv
-rw-r--r--. 1 oracle oinstall 64  3月  4 10:56 sample.csv.bak
$ cat sample.csv.bak
1,みかん,120
2,りんご,300
3,いちご,230
4,ぶどう,450
$
スポンサーリンク