":"の後に文字が4文字未満の場合は、行全体を削除します。

":"の後に文字が4文字未満の場合は、行全体を削除します。

たとえば、次のような多くの行を含むファイルがあります。

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

関連情報