有没有办法用单行命令打印多个字段?
我想将 $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