私のCSVファイルの途中に次の行があります。
Products below this line are out of stockNumber, month, year, reference, store
注:数値、月、年、参照番号、および店舗はCSVフィールドです。
コマンドラインコマンドを使用してファイルからこの行を削除するにはどうすればよいですか?
CSVは次のとおりです。
Number, month, year, reference, store
1,1,2014,13322,main
2,2,2014,13322,main
3,3,2011,1322,main
4,4,2012,3322,main
5,4,2013,122,secondary
Products below this line are out of stockNumber, month, year, reference, store
12,411,2010,122,Albany
25,41,2009,122,Dallas
35,24,2008,122,New
答え1
最も簡単な方法は、grep -v
次のコマンドを使用することです。
grep -v "Products below" your_file.csv > new_file.csv
答え2
入力データに応じて、次のことを試すことができます。
$ sed '/^Products/d' file
Number, month, year, reference, store
1,1,2014,13322,main
2,2,2014,13322,main
3,3,2011,1322,main
4,4,2012,3322,main
5,4,2013,122,secondary
12,411,2010,122,Albany
25,41,2009,122,Dallas
35,24,2008,122,New
sed -i.bak
現在の場所でファイルを編集してバックアップファイルを作成するには:
sed -i.bak '/^Products/d' file
答え3
最初の単語の後の空白を含め、始まるすべての行を削除すると安全に想定できる場合は、次のようになりますProducts
。
アッ
awk '$1!="Products" file > newfile
真珠
perl -ne 'print unless /^Products/' file > newfile
または
perl -ane 'print if $F[0]!="Products"' file > newfile
または、その場所でファイルを編集します。
perl -i -ne 'print unless /^Products/; ' file perl -i -ane 'print if $F[0]!="Products"' file
grep(これはより短いバージョンです。svqの答え)
grep -v ^Products file > newfile
bash(ただ楽しい)
while read line; do [[ $line =~ ^Products ]] || echo $line; done < file > newfile
答え4
sed
検索パターンを使用して、そのパターンを含むすべての行を削除できます。
sed -i '/Products below this line are out of stockNumber, month, year, reference, store/d' file