2013-07-12 23 views
3

我是初學者,所以我感謝你的幫助。我想用shell腳本來做到這一點。 我有一個看起來像這樣的文件:從一列中取出每個3的值並將它們連成一排

1 
2 
3 
4 
5 
6 
7 
8 
9 

我想將其轉換爲:

1 2 3 
4 5 6 
7 8 9 

這是比這更大,所以我需要的東西一般,很長的文件工作。

謝謝!

+3

1爲非常好的第一個問題,包括樣本數據,和需要的。 (要是 ...!)。下一次,請務必理解輸入文本框頂部的格式化工具。突出顯示您想要顯示的任何內容,然後點擊「{}」。祝你們好運。 – shellter

回答

2

這裏有一種方法:

awk 'NR%3!=0{printf "%s ",$1;next}1' inputFile 
1

像這樣的東西?

$ seq 9 | sed 'N;N;s/\n/ /g' 
1 2 3 
4 5 6 
7 8 9 
2

你可以做到這一點與paste,例如:

seq 9 | paste - - - -d ' ' 

的3個短線是有3列。您添加或刪除短劃線以獲得更多或更少的列。

-d ' '是用空格分隔列,因爲默認是tab。

3

一種替代AWK溶液

awk '{ORS = NR % 3 == 0?"\n":" ";} 1' input.txt 
+0

+1巧妙使用內置變量。大括號和分號可以忽略,但我想他們提供更多的可讀性。 –

2

另一種可能性:

seq 9 | pr -atT -s' ' -3 
相關問題