2010-10-13 74 views
1
first file of information page 
name/joe/salary1 50 10 2 
name/don/miles2 
        20 4 3 
name/sam/lb3  0 200 50 

可以有一個人請告訴我,我怎麼可以刪除所有詞語的上述文件,所以我的輸出如下所示如何在UNIX中從文件中刪除單詞?

50 10 2 

    20 4 3 
    0 200 50 

回答

2

改爲使用awk。下面的代碼表示要遍歷每個字段,檢查它是否是一個整數。如果是,將它們打印出來。不需要複雜的正則表達式。

$ awk '{for(i=1;i<=NF;i++) if($i+0==$i) {printf $i" "} print ""}' file 

50 10 2 

20 4 3 
0 200 50 
+0

非常感謝,它工作得很好。 – 2010-10-13 07:36:53

1

看起來要保留只有數字和空間。如果是的話,你可以這樣做:

sed 's/[^0-9 ]//g' inputFile 

編輯:在需求的變化,如果一個數字被發現與一個字母,它應作爲單詞的一部分進行處理。

這Perl腳本做的:

perl -ne 's/(?:\d*[a-z\/]+\d*)*//g;print' input 
+0

這不'salary1','miles2'或'lb3'其中包含數字 – mouviciel 2010-10-13 07:19:37

+0

非常感謝你的快速反應工作。你的繩子完美地工作,但如果這些單詞也以數字結尾,會怎樣呢? (如上所述)。那麼我的最終文件也會包含那些1 2 3。 – 2010-10-13 07:20:50

1

sed -e "s/[a-zA-Z/]/ /g" file

會做,雖然我很喜歡codaddict的方式更多,如果你想保護者號和空白。這種方法可以去除所有字母和'/'符號,並用空格替換它們。

如果您想修改文件,請通過-i開關。該命令將輸出文件的外觀。

+0

非常感謝您的快速回復。你的繩子完美地工作,但如果這些單詞也以數字結尾,會怎樣呢? (如上所述)。那麼我的最終文件也會包含那些1 2 3。 – 2010-10-13 07:23:47

0

如果你的文件有這樣的結構,我建議首先篩選出的第一行,然後從行開始的所有字符,直到達到第一個空間:

sed -ni '2,$s/^[^ ]*//p' file 
+0

非常感謝您的所有代碼信息。 – 2010-10-13 07:37:46

0

每行刪除一切直到第一個空格字符(還刪除前導空格):

sed 's/\S*\s*//' file 
+0

感謝您的所有代碼信息。他們都很好。 – 2010-10-13 07:38:41