awkで特定の列を除外して出力させる場合は、以下のように対象となる列を空白にしてやることで対応できる。
例:2列目を除外して出力させる場合
bash
awk '{$2="";print}' 対象ファイル
shell[root@BS-PUB-CENT7-01 ~]# cat /tmp/test1.txt id name prefecture value 1 aaa 1 123 2 bbb 2 544 3 ccc 1 65745 4 ddd 1 122 5 eee 2 222 6 fff 1 444 7 ggg 3 566 8 hhh 4 111 9 iii 3 12 10 bbb 2 1243 11 ddd 1 4423 [root@BS-PUB-CENT7-01 ~]# cat /tmp/test1.txt | awk '{$2="";print}' id prefecture value 1 1 123 2 2 544 3 1 65745 4 1 122 5 2 222 6 1 444 7 3 566 8 4 111 9 3 12 10 2 1243 11 1 4423
どうやら複数列の指定をまとめて記述する方法は無いようなので、連続した列(2列目から4列目など)の場合はforで処理させる必要がありそうだ。
例:2列目と3列目を除外する場合
bash
awk '{for(i=2;i<=3;i++){$i=""};print}' 対象ファイル
shell[root@BS-PUB-CENT7-01 ~]# cat /tmp/test1.txt id name prefecture value 1 aaa 1 123 2 bbb 2 544 3 ccc 1 65745 4 ddd 1 122 5 eee 2 222 6 fff 1 444 7 ggg 3 566 8 hhh 4 111 9 iii 3 12 10 bbb 2 1243 11 ddd 1 4423 [root@BS-PUB-CENT7-01 ~]# cat /tmp/test1.txt | awk '{for(i=2;i<=3;i++){$i=""};print}' id value 1 123 2 544 3 65745 4 122 5 222 6 444 7 566 8 111 9 12 10 1243 11 4423