awk中的打印列

awk中的打印列,awk,Awk,我正在shell脚本中使用awk,它正在按预期工作 awk -F'^' 'BEGIN {OFS="^"} {print $1,$2,$3,$4,$5}' 当我需要更改列数时,我只需通过添加$6、$7、$8来更改print语句 有没有办法在变量中声明它并在awk中使用该变量 columns=8 awk -F'^' 'BEGIN {OFS="^"} {print $1..$columns}' 您可以始终使用for循环 使用printf和循环后的print将在行尾提供换行符。您可以始终使用for循

我正在shell脚本中使用awk,它正在按预期工作

awk -F'^' 'BEGIN {OFS="^"} {print $1,$2,$3,$4,$5}'
当我需要更改列数时,我只需通过添加$6、$7、$8来更改print语句

有没有办法在变量中声明它并在awk中使用该变量

columns=8
awk -F'^' 'BEGIN {OFS="^"} {print $1..$columns}'
您可以始终使用for循环

使用printf和循环后的print将在行尾提供换行符。

您可以始终使用for循环


使用printf和循环后的print将在行尾为您提供换行信息。

这可以实现您的目标:

column=8
awk '{print $'$column'}'
参考:

这可能会实现您的目标:

column=8
awk '{print $'$column'}'
参考:

您可以使用awk-v指定shell变量,然后循环遍历所有列:

awk -v cols="$columns" '{ for (i=1; i<=cols; i++) printf (i!=cols) ? $i OFS : $i"\n" }' file.txt

可以使用awk-v指定shell变量,然后循环遍历所有列:

awk -v cols="$columns" '{ for (i=1; i<=cols; i++) printf (i!=cols) ? $i OFS : $i"\n" }' file.txt

通过定义一个函数来实现。
awk函数cols,e{ret=;fori=s;i通过定义一个函数来实现。
awk函数cols,e{ret=;fori=s;i这可能适合您:

echo 1 2 3 4 5 6 7 8 9 | awk -vnf=5 '{NF=nf}1'
1 2 3 4 5

这可能适合您:

echo 1 2 3 4 5 6 7 8 9 | awk -vnf=5 '{NF=nf}1'
1 2 3 4 5