2015-10-14 54 views
2

例如,如果我有一個文件如下:腳本讀取與許多列的文件到一個文件中有一列

1 2 3 4 5 6 
7 8 9 10 11 12 

而且我希望重新組織該文件爲:

1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 

我可以使用awk命令嗎?

+0

看到這個:[我試圖創建一個文件集合的單詞字典。有沒有簡單的方法來打印文件中的所有單詞,每行一個?](http://stackoverflow.com/questions/1123572/extract-words-from-a-file)? – pelumi

回答

0

有多種方法可以實現這一點。

隨着grep

grep -oE "[0-9]+" file 
  • -o標誌只打印匹配模式(在這種情況下,數字),由換行
  • -E激活擴展正則表達式定界。

隨着awk

awk 'OFS="\n"{$1=$1}1' file 
  • OFS定義了輸出字段分隔符。
  • $1=$1因爲我們改變了OFS,我們需要通過將第一個字段設置爲自身來重建該行,這將強制重建。
  • 1至少我們需要一個真正的條件,即行被打印。
+0

你能解釋一下命令嗎?例如,-oE在grep中做了什麼? OFS的含義是什麼?對不起,我真的是初學者... – Sky

+0

我更喜歡awk命令,最近我發現它在我的工作中超級有用...非常感謝,這個awk可以完成我的工作,我會弄清楚這個意思或這句話... – Sky

+0

@Sky我將解釋添加到我的答案 – chaos

0

隨着sed

TMP$ sed -r 's/ +/\n/g' File 
1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 

與換行符替換所有連續的空間。

+0

謝謝!但是這個表揚將在不同欄目的數據之間創建一條空行。 awk'OFS =「\ n」{$ 1 = $ 1} 1'給出一列沒有任何空行。 – Sky

+0

這可能是因爲每一行都以一個或多個空格終止... –

0

天真AWK方法:

#!/usr/bin/awk -f 

{ for (i = 1; i <= NF; i++) print $i; } 

混沌的方法可能是更有效的。

+0

但您的閱讀起來更容易......謝謝! – Sky

相關問題