Regular-Expression
從文件中刪除數字和字元
我有一個如下文件:
chs_de_le_q1gg dsdas_212 sdasd_4567 weqwe_32323 dasds_232322 rr_F3r4 we_ff asdasd_1_fff sdfsd_tr dsd_fr
我需要刪除以長度為 4-8 的數字結尾的行;也可以刪除以 ff 和 fr 結尾的行。
我不能把數字和字母放在一起
cat test.txt | grep -vE "_[0-9]|[^0-9][0-9]{1,8}$\|_ff$|_fr$"
有人可以幫忙嗎?
輸出
dsdas_212 chs_de_le_q1gg rr_F3r4 asdasd_1_fff sdfsd_tr
您正在尋找的擴展正則表達式:
_[[:digit:]]{4,8}$ _f[fr]$
所以使用 grep :
grep -Ev -e '_[[:digit:]]{4,8}$' -e '_f[fr]$' test.txt
或者使用 sed,您可以添加
-i
以將更改直接應用到文件sed -E -e '/_[[:digit:]]{4,8}$/d' -e '/_f[fr]$/d' test.txt
-E
使用擴展正則表達式- grep
-e
搜尋所有給定的模式- sed
-e
將腳本添加到要執行的命令中[:digit:]
一個數字{4,8}
從 4 到 8$
行結束[fr]
要麼f
_r
如果您還需要添加正則表達式,則需要添加
-e
正則表達式。您可以根據需要添加很多內容,-e
因此不要使正則表達式過於復雜。因此,在您的情況下,您可以添加 br, bd, rt :_br$ _bd$ _rt$