我已经将列号作为字符串数组存储在一个单独的变量中,我想在AWK打印中提供该变量作为输入。
所以,我想创建一个变量,存储$1,$2,$3,$4,$5,并将其作为输入传递。
第一部分,创建一个变量,我已经成功地与这段代码:
clm=$(
awk -F"\t" '{print NF}' broj.tsv |
sort -nu |
tail -n 1) &&
comma_arr=$(seq -s, 1 $clm |
sed 's/^/\$/; s/,$//; s/,/,$/g')
运行&& echo "$comma_arr"
之后,我可以看到所需的输出,即**$1、$2、$3、$4、$5**。
下一步是将comma_arr作为AWK打印的输入。
我试过的是:
&& awk -v c=$comma_arr '{print c}' broj.tsv
但这会返回与输出相同的字符串数组:$1,$2,$3,$4,$5.
我正在寻找最简单的方法来做到这一点,但我没有成功。如果你能解释我如何实现这一点,这里有什么问题(我知道,通过传递“c”awk识别这是一个字符串要打印,而不是列顺序)。
2条答案
按热度按时间5lwkijsr1#
只需要将列号放在变量中,前面不放
$
,然后将其拆分并迭代以获得您想要的结果。sirbozc52#
样本数据集:
指定要打印的列列表的一种
awk
方法:这产生: