簡體   English   中英

刪除與sed模式不匹配的所有行

[英]deleting all lines that don't match a pattern with sed

我有一個文件tmpFile包含:

wqf____32qwfe
123412
qqwef123414
12039421
...

tmpFile中,行中僅包含數字,或者行中可以包含任何類型的字符。

我想保留僅包含整數的行。 我該如何實現?

雖然你可以為此使用SED的工作是與G lobally搜索A 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
sed '/^[0-9]\+$/!d' tmpFile

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

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

查找一個或多個數字將起作用。

還有其他方法可以達到相同的總體效果,尤其是在這種有限的情況下。 如果您需要在更大的腳本中執行此操作,則這是對您的要求的直接答案。

您可以取消打印圖案空間,僅打印與數字圖案匹配的行,例如:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM