次のファイルがあります。
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
ベストアンサー1
探している拡張正規表現:
_[[:digit:]]{4,8}$
_f[fr]$
したがって、grepを使用してください。
grep -Ev -e '_[[:digit:]]{4,8}$' -e '_f[fr]$' test.txt
-i
または、sedを使用して変更をファイルに直接適用するように追加することもできます。
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$