awkで指定した列から後ろ全部を出力させる
Pocket

awkで、指定した列から後ろの列すべてを出力させる場合、forで繰り返し処理をさせるのが楽だ。

awk '{c="";for(i=指定する列;i<=NF;i++) c=c $i" "; print c}'
blacknon@BS-PUB-UBUNTU-01:~$ head /tmp/test7.txt
aaaaa 123 test 1 2
bbbbb 123 test 2 2
ccccc 123 test 3 2
ddddd 123 test 4 2
eeeee 123 test 5 2
fffff 123 test 6 2
ggggg 123 test 7 2
hhhhh 123 test 8 2
iiiii 123 test 9 2
jjjjj 123 test 10 2
blacknon@BS-PUB-UBUNTU-01:~$ # 3列目以降をすべて出力する
blacknon@BS-PUB-UBUNTU-01:~$ awk '{c="";for(i=3;i<=NF;i++) c=c $i" "; print c}' /tmp/test7.txt
test 1 2
test 2 2
test 3 2
test 4 2
test 5 2
test 6 2
test 7 2
test 8 2
test 9 2
test 10 2
test 11 2
test 12 2
test 13 2
Sponsored Links

もしawkでなくてはいけない(他の処理も並行してやっている場合など)でなければ、cutを利用する方法もある。

cut -d' ' -f 指定列-
blacknon@BS-PUB-UBUNTU-01:~$ cut -d' ' -f 3- /tmp/test7.txt
test 1 2
test 2 2
test 3 2
test 4 2
test 5 2
test 6 2
test 7 2
test 8 2
test 9 2
test 10 2
test 11 2
test 12 2
test 13 2

 

Pocket

Written by blacknon

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

Leave a Comment

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