2016-05-30 115 views
0

模式的所有行我有一個文件tmpFile包含:刪除不匹配SED

wqf____32qwfe 
123412 
qqwef123414 
12039421 
... 

tmpFile有隻有數字,可以包含任何字符,線條在其中,或線條。

我想保留只包含整數的行。 我該如何做到這一點?

回答

4

雖然你可以爲此使用SED的工作就是 lobally搜索[R egular Ë上的表達和P RINT結果如此猜測的發明是爲了做正是這個工作什麼工具?

要打印僅包含數字線,GNU的grep是:

grep -E '^[0-9]+$' file 

或與任何的grep:

grep '^[0-9][0-9]*$' file 

要打印包含非數字線:

grep '[^0-9]' file 

打印不包含數字的行(包括空行):

grep -v '[0-9]' file 

要打印不包含非數字線(包括空行):

grep -v '[^0-9]' file 
+1

是的,非常有趣,這似乎真的是我想要做的。 'grep -E'^ [0-9] + $'tmpFile'和'grep'^ [0-9] [0-9] * $'tmpFile'爲我想要做的工作!謝謝 – Simonlbc

1

可以禁止印刷圖案的空間,只打印匹配的數字圖案的線條,例如:

$ sed -n '/^[0-9]\+$/p' file 
123412 
12039421 
2
sed '/^[0-9]\+$/!d' tmpFile 

!反轉的邏輯。請注意,\+不是符合POSIX的版本sed(例如BSD或Mac OS X sed)的基本功能的一部分。

sed '/^[0-9]\{1,\}$/!d' tmpFile 

這會工作,尋找一個或多個數字。

還有其他方法可以達到相同的整體效果,特別是在這個有限的環境中。如果您需要將其作爲更大腳本的一部分來執行此操作,則這是您的要求的直接答案。

+1

同樣可以通過重複圖案'/^[0-9] [0-9]被歸檔* $ /!d' – andlrc