パターンマッチング後の特定の行の削除

パターンマッチング後の特定の行の削除

次のファイルがあります。

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
    

おすすめ記事