たとえば、次のような多くの行を含むファイルがあります。
blue:fish
red:tomato
black:moon
":"の後に文字が4つ未満の場合は、行全体を削除したいと思います。
答え1
あなたはそれを使用することができますsed
:
sed -r -e '/:.{0,3}$/d' data
-r
拡張正規表現を使用します(の場合{}
)。このsed
式は、コロンの後に0〜3文字を使用してから、すべての行に一致する行の終わりをd
削除します。その他の内容はすべて印刷されます。
答え2
このAWKコマンドは、:
2番目のフィールドが少なくとも4文字(4文字以上)の行を分割して印刷します。仮定::
常に存在し、複数回表示されません。
awk -F : "length($2) >= 4"
複数回発生した場合は、最後の列を参照する$NF
代わりに使用できます。$2
答え3
これを行う方法はいくつかあります。
以下は一つですperl
。
$ perl -ne 'print unless /:.{0,3}$/' file
blue:fish
red:tomato
black:moon
答え4
使用grep
:
grep -E ':.{4,}$' file
grep
+(moreutilsから)を使用してsponge
「所定の位置に」ファイルを「編集」します。
grep -E ':.{4,}$' file|sponge file