簡體   English   中英

在awk中打​​印列

[英]printing columns in awk

我在外殼程序腳本中使用awk,並且按預期方式工作。

awk -F'^' 'BEGIN {OFS="^"} {print $1,$2,$3,$4,$5}'

當我需要更改列數時,只需添加$ 6,$ 7,$ 8即可更改打印語句

有沒有辦法在變量中聲明它並在awk中使用該變量?

columns=8
awk -F'^' 'BEGIN {OFS="^"} {print $1..$columns}'

通過定義一個函數來做到這一點。 awk 'function col(s,e){ret="";for(i=s;i<=e;i++){ret=ret" "$i}return ret}{print col(2,6)}'

您可以使用awk -v指定一個shell變量,然后遍歷所有列:

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

您可以始終使用for -loop

 {for(i=1;i<=columns;i++)printf("%s ", $i);print '\n'}'

使用printf和循環后的print將在行尾為您提供換行。

這可以實現您的目標:

column=8
awk '{print $'$column'}'

參考: http : //www.grymoire.com/Unix/Awk.html#uh-4

這可能對您有用:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM