次のファイルがあります。
chs_de_le_q1gg
fd_tr_mn_0
fd_tr_mn_06
fd_tr_mn_070
fd_tr_mn_0716
fd_tr_mn_09013
fd_tr_mn_092433
fd_tr_mn_1020333
fd_tr_mn_12013332
dsdas_1
dsdas_12
dsdas_212
sdasd_4567
weqwe_32323
dasds_232322
2321321_rewrwe_3233
32_Ff
asdasd_1_fff
長さ4〜8の行で終わる行を削除する必要があります。数字で始まる行も削除できます。
以下のコードは削除したい行と一致しますが、その一致に対して逆方向の一致を実行して追加すると-iv
機能しません。
cat test.txt | grep -oP '(?<![0-9])[0-9]{4,8}(?![0-9])'
ベストアンサー1
次の行を削除するには:
数字で始まる:
^[0-9]
または^\d
または4〜8文字の数字で終わります:
[0-9]{4,8}$
または\d{4,8}$
。grep -vE '^[0-9]|[0-9]{4,8}$' infile >output sed -E '/^[0-9]|[0-9]{4,8}$/d' infile >output grep -vP '^\d|\d{4,8}$' infile >output
次の行を削除するには:
数字で始まる:
^[0-9]
または正確に4〜8文字の長さ:
[^0-9][0-9]{4,8}$
または\D\d{4,8}$
。grep -vE '^[0-9]|[^0-9][0-9]{4,8}$' infile >output sed -E '/^[0-9]|[^0-9][0-9]{4,8}$/d' infile >output grep -vP '^\d|\D\d{4,8}$' infile >output