次のCSVファイルがあります。
aaa,vvv,,,,
bbb,qqq,,,vvv,
ccc,www,iii,,,kkk
ddd,rrr,,,lll,
eee,ttt,ooo,sss,ggg,jjj
fff,yyy,ppp,,,
n〜m番目の列が空の行を取得したいと思います。 (この場合:3〜4番目の列が空の行を取得します。)
次に、次のように出力を取得します。
bbb,qqq,,,vvv,
ddd,rrr,,,lll,
実際には、awkを使用して特定の範囲列が空の行を取得したいと思います。
awk -F, '$n-$m=="" {print}' file.csv
awk -F, '$3-$4=="" {print}' file.csv
答え1
一方通行:
awk -F, -v st=3 -v end=4 '{for(i=st;i<=end;i++){if($i){next;}}}1' file
答え2
@Guruのソリューションは、awk
おそらくこれよりも移植性が高いですが、grep
次の目的に使用されます。この特定例:
egrep '^[a-z]*,[a-z]*,{3}[a-z]' csv
bbb,qqq,,,vvv,
ddd,rrr,,,lll,
csv
このファイルはどこにありますか?
cat csv
aaa,vvv,,,,
bbb,qqq,,,vvv,
ccc,www,iii,,,kkk
ddd,rrr,,,lll,
eee,ttt,ooo,sss,ggg,jjj
fff,yyy,ppp,,,
grep --version
grep (BSD grep) 2.5.1-FreeBSD