2010-06-02 38 views
0

我有奇怪的問題cut 我寫的劇本,還有我行:問題切口(UNIX)

... | cut -d" " -f3,4 >! out 

切臨危這個數據(我用回聲檢查的話)

James    James    033333333 0    0.00 

但我收到out空行,有人可以解釋爲什麼嗎?

回答

2

你需要壓縮出來的空間序列,因此,電子一串空格被一個空格替換。該tr command's -S(擠)選項是爲這個完美的:

$ ... | tr -s " " | cut -d" " -f3,4 >! out 
0

Cut不會將多個空格看作單個空格,因此它與空格之間的「空白」相匹配。

當你離開>! out部分時,你會得到空行嗎?也就是說,你的目標是正確的領域?

如果輸入字符串使用固定的間距,你可能需要使用cut -c 4-10,15-20 | tr -d ' '提取字符組4-10和15-20,並從中刪除空格..

+0

當然是5個元素,但我不知道什麼是虛無,我該如何改變它我需要第4和第5場? – lego69 2010-06-02 11:07:26

+0

你可以使用另一種形式的剪輯(請參閱我編輯過的文章),或者可以使用awk(請參閱下一個答案)。 – 2010-06-02 11:11:44

1

如果你想從一個文本文件中的字段,awk幾乎總是回答:

... | awk '{print $3" "$4}' 

例如:

$ echo 'James  James  033333333 0    0.00' | cut -d" " -f3,4 

$ echo 'James  James  033333333 0    0.00' | awk '{print $3" "$4}' 
033333333 0 
+0

哦,我可以做到沒有awk,我不能使用它,它是我的項目的一部分,我只做cut,grep,sort,uniq,head,tail – lego69 2010-06-02 11:10:16

+0

這些命令都不會將多個空間壓縮成一。你確定它不是輸入中的標籤嗎? – paxdiablo 2010-06-02 11:13:19

+0

是的,我敢肯定,但仍然沒有awk我怎麼做,我沒有固定的間距? – lego69 2010-06-02 11:15:20

0
... | grep -o "[^ ]*" 

將提取領域,在每一個單獨的行。那麼你可能會頭/尾巴他們。不知道再次將它們放在同一行上。