2013-10-09 40 views

回答

2

替換3的n$1與列的任何值要打印:

$ for i in {1..3}; do awk '{print $1}' file; done 
1 
2 
3 
4 
5 
1 
2 
3 
4 
5 
1 
2 
3 
4 
5 

你可以只用awk做,但你必須存儲在內存中的整個文件:

$ awk '{a[NR]=$1}END{for(i=1;i<=3;i++)for(j=1;j<=NR;j++)print a[j]}' file 

這是使用shell構造的場合之一,實際上是有意義的。

+0

另外'貓file'代替'awk'命令。 **編輯**:對不起,他談論專欄,然後'awk'更好。 – Birei

+1

@Birei我認爲,當OP要求打印一列時,它們表示文件中的1列,即有許多「awk」可以被「cut」替代,而不是「cat」。如果當然文件只包含一個列,那麼'cat'是一個更好的選擇。 –

2
awk -v n=7 '{s = s $1 ORS} END{for (i=1;i<=n;i++) printf "%s", s}' file 

n設置爲您喜歡的任何數字。

或者,GNU AWK:

awk -v n=7 -v RS='\0' -v ORS= 'END{for (i=1;i<=n;i++) print}' file 
+0

第二種方法很聰明,但是假設文件只包含一列*(實際上可能是這種情況,而OP的描述很差)。* –

+1

@sudo_O是的,我並沒有對這個問題進行大量的思考但我完全期待OP的接下來的幾個迴應是「哦,但我的投入並不真的看起來像那樣......」。 –