2048文字より長い行を削除する方法についての質問を見つけました:
Q:しかし、どのようにして4文字より短い行を削除できますか?したがって、ファイル内の長さが1または2または3の行を削除します。
更新:多くの良い答えをありがとう、しかし、私は1つだけをOKとマークすることができます
2048文字より長い行を削除する方法についての質問を見つけました:
Q:しかし、どのようにして4文字より短い行を削除できますか?したがって、ファイル内の長さが1または2または3の行を削除します。
更新:多くの良い答えをありがとう、しかし、私は1つだけをOKとマークすることができます
回答:
使用できますsed
。以下は、3文字以下の行を削除します。
sed -r '/^.{,3}$/d' filename
ファイルへの変更をインプレースで保存するには、-i
オプションを指定します。
お使いのバージョンがsed
拡張RE構文をサポートしていない場合、BREで同じことを書くことができます。
sed '/^.\{,3\}$/d' filename
すべてのsed
バリアントで機能します。
また、使用することができますawk
:
awk 'length($0)>3' filename
を使用してperl
:
perl -lne 'length()>3 && print' filename
以下は、VimのExモードとglobal
コマンドを使用したVimソリューションです。
これはを使用するのと非常に似てsed
いますが、特殊な文字( '{'、 '}')をエスケープする必要があるだけです。
:g/^.\{,3\}$/d
VimのVery Magic Regexモード(\ v)を使用すると、このエスケープを回避できます。
:g/\v^.{,3}$/d
:help magicも参照してください
Use of "\v" means that in the pattern after it all ASCII characters except
'0'-'9', 'a'-'z', 'A'-'Z' and '_' have a special meaning. "very magic"
また、時に役立つこともありvglobal
ます。
:v/\v^.{,3}$/d
3文字までの行を除くすべてを削除します。
sed '/^.\{,3\}$/d'
BSD sedでは動作しません:sed: 1: "/^.\{,3\}$/d": RE error: invalid repetition count(s)
。sed -rバージョンは構文的には有効ですが、行を削除しません。