awk在bash中使用的变量集

时间:2013-11-07 19:54:40

标签: bash variables awk

我是否使用colNb或$ colNb,它不起作用

export colNb=$(awk '{print NF}' file1 | sort -nu | tail -n 1)

awk '{for(i=3 ; i<colNb; i++) {printf("%s\t", $i)} print ""}' file1 | less

使用$ colNb,我得到了

awk: illegal field $(), name "colNb"
 input record number 1, file1
 source line number 1

使用colNb,我只得到空字段而不是file1

中的字段

2 个答案:

答案 0 :(得分:3)

在awk中使用-v选项将shell变量传递给awk:

awk -v colNb="$colNb" '{for(i=3 ; i<colNb; i++) {printf("%s\t", $i)} print ""}' file1 | less

答案 1 :(得分:2)

这样做

awk '{for(i=3 ; i<c; i++) {printf("%s\t", $i)} print ""}' c="$colNb" file1 | less

您需要使用-v或awk

之后在awk外部设置变量