awkで特定の列を除外して出力する
Pocket

awkで特定の列を除外して出力させる場合は、以下のように対象となる列を空白にしてやることで対応できる。

●例:2列目を除外して出力させる場合

awk '{$2="";print}' 対象ファイル
[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
Sponsored Links

どうやら複数列の指定をまとめて記述する方法は無いようなので、連続した列(2列目から4列目など)の場合はforで処理させる必要がありそうだ。

●例:2列目と3列目を除外する場合

awk '{for(i=2;i<=3;i++){$i=""};print}' 対象ファイル
[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

 

Pocket

Written by blacknon

インフラ系のSE。一時期はプログラマ。 仮想化とオープンソースに興味あり。一日中寝てたい今日このごろ。 スペインとかで働きたいなぁ…(シエスタがあるので)

Leave a Comment

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