我在shell腳本中使用了awk,它按預期工作。在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}'
我在shell腳本中使用了awk,它按預期工作。在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}'
你可以使用printf
和循環之後的print
會給你在該行的末尾換行始終使用for
-loop
{for(i=1;i<=columns;i++)printf("%s ", $i);print '\n'}'
。
可以使用awk -v
指定一個shell變量,然後遍歷所有列:
awk -v cols="$columns" '{ for (i=1; i<=cols; i++) printf (i!=cols) ? $i OFS : $i"\n" }' file.txt
待辦事項它通過定義一個函數。 awk 'function col(s,e){ret="";for(i=s;i<=e;i++){ret=ret" "$i}return ret}{print col(2,6)}'
這可能會爲你工作:
echo 1 2 3 4 5 6 7 8 9 | awk -vnf=5 '{NF=nf}1'
1 2 3 4 5