1行のコマンドで複数のフィールドを印刷する方法はありますか?
$ 3を$ NFで印刷したいです。次のようにできます。
awk -F[:] '{print $3,$4,$5 .... $NF}'
しかし、これはフィールド数が多い場合には適しておらず、エラーが発生しやすい。
答え1
私が知っている唯一の方法は、各フィールドを繰り返すことです。
$ echo "a:b:c:d:e:f:g:h:i" |
awk -F":" '{for(i=3;i<=NF-1;i++){printf "%s ", $i}print $NF}'
c d e f g h i
または、以下を使用することもできますperl
。
$ echo "a:b:c:d:e:f:g:h:i" | perl -F":" -lane 'print "@F[2..$#F]"'
c d e f g h i
またはcut
:
$ echo "a:b:c:d:e:f:g:h:i" | cut -d: -f3-
c:d:e:f:g:h:i
またはsed
:
$ echo "a:b:c:d:e:f:g:h:i" | sed 's/\([^:]*:\)\{2\}//'
c:d:e:f:g:h:i