CSVファイルの特定の列を空文字にするコマンド
c0,c1,c2,c3,c4 c0,c1,c2,c3,c4 c0,c1,c2,c3,c4 c0,c1,c2,c3,c4 c0,c1,c2,c3,c4
の列の数を変えずにc1だけ消して、↓のようにするにはどうするか?
c0,,c2,c3,c4 c0,,c2,c3,c4 c0,,c2,c3,c4 c0,,c2,c3,c4 c0,,c2,c3,c4
cutコマンドを使うと
cut -d, -f 1,3- a.csv
c0,c2,c3,c4 c0,c2,c3,c4 c0,c2,c3,c4 c0,c2,c3,c4 c0,c2,c3,c4
cutだけに列自体消えてしまいます。
自分が思いついた方法はこう
perl -F, -lape '$F[1]="";$_=join(",",@F)' a.csv
結果、↓のようになります。
c0,,c2,c3,c4 c0,,c2,c3,c4 c0,,c2,c3,c4 c0,,c2,c3,c4 c0,,c2,c3,c4
awkでもいいかもですが一旦これで。
ちなみにperlのオプションは以下の通り
❯ perl -h Usage: perl [switches] [--] [programfile] [arguments] -a autosplit mode with -n or -p (splits $_ into @F) -e program one line of program (several -e's allowed, omit programfile) -F/pattern/ split() pattern for -a switch (//'s are optional) -l[octal] enable line ending processing, specifies line terminator -p assume loop like -n but print line also, like sed