[英]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.