ターミナル上で指定した列のみを除外する

だいぶ前に、ターミナル上で指定列だけを除外して出力したいという事があったので、備忘で残しておく。
真っ先に思いつくのがawkでの処置なのだが、awkだと指定した列だけを削除するという、そのものズバリな機能はないので、ちょっと冗長になってしまう。

awk '{awk 'BEGIN{FS=OFS=","}{x=3;$x="";$0=gensub(FS,"",x)}1' #3列目を削除する例
blacknon@BS-PUB-UBUNTU-01:~$ echo {a..e}{01..05} | xargs -n5 | sed 's/ /,/g' | awk 'BEGIN{FS=OFS=","}{$3="";$0=gensub(FS,"",3)}1'
a01,a02,a04,a05
b01,b02,b04,b05
c01,c02,c04,c05
d01,d02,d04,d05
e01,e02,e04,e05
Sponsored Links

もしGNU coreutilsが入っている環境(普通にCentOSとかUbuntuなら入ってるはず。Mac OS Xだと別途入れないとならない)なら、cutコマンドを使うのが良いだろう。

cut -d"," --complement -f 3,4 #3,4列目を削除する例
blacknon@BS-PUB-UBUNTU-01:~$ echo {a..e}{01..05} | xargs -n5 | sed 's/ /,/g' | cut -d"," --complement -f 3,4
a01,a02,a05
b01,b02,b05
c01,c02,c05
d01,d02,d05
e01,e02,e05

 


Written by blacknon

インフラエンジニア(…のつもり)。 仕事で使うならクライアントはWindowsよりはUNIXの方が好き。 大体いつも眠い。

Leave a Comment

メールアドレスが公開されることはありません。

*