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
$