2015-11-08 109 views
1

我正在使用awk命令从文本文件中提取三行。在变量中使用awk

awk 'BEGIN {FS="\t";OFS=","}; {print $1,$3,$10}' $FILENAME > $OUTPUT 

我想作为一个变量分别指定列数字,所以它会更容易在未来修改如下:

COLUMNS=$1,$3,$10 
awk 'BEGIN {FS="\t";OFS=","}; {print $COLUMNS}' $FILENAME > $OUTPUT 

但是它拉的所有列到输出,不仅3我指定。我如何正确地做到这一点?

+0

你用shell引用必需品/规则/限制被困。试试'echo $ COLUMNS'并开始开悟。 ;-) – alk

回答

1

是这样的?

$ more file 
a,b,c,d,e 
1,2,3,4,5 

$ a='$1,$2,$NF' 

$ awk -F, "{print $a}" file 
a b e 
1 2 5 
+0

@Am_I_Helpful:该提案有效。那么为什么这不能回答OP的问题呢? – alk