回答:
sed '/^.\{2048\}./d' input.txt > output.txt
sed: 1: "/^.\{2048\}..*/d": RE error: invalid repetition count(s)(Mac OS X)
2049文字以上の行を削除するソリューションは次のとおりです。
sed -E '/.{2049}/d' <file.in >file.out
この式/.{2049}/dは、少なくとも2049文字を含むすべての行に一致し、それらを入力から削除し、出力上に短い行のみを生成します。
でawk、長さ2048以下の行を印刷します。
awk 'length <= 2048' <file.in >file.out
sedソリューションを文字通り模倣するawk:
awk 'length >= 2049 { next } { print }' <file.in >file.out
sed: 1: "/^.\{400,\}$/d": RE error: invalid repetition count(s)(Mac OS X)
このようなものはPythonで動作するはずです。
of = open("orig")
nf = open("new",'w')
for line in of:
if len(line) < 2048:
nf.write(line)
of.close()
nf.close()
perl -lne "length < 2048 && print" infile > outfile
-lただし、必要ありません。
Warning: Use of "length" without parentheses is ambiguous at -e line 1. Unterminated <> operator at -e line 1.
length($_) > 2048 && print。とにかくのlengthショートカットlength($_)です。
上記の回答は、Mac OS X 10.9.5では動作しません。
次のコードは機能します。
sed '/.\{2048\}/d'。
質問はされていませんが、参照用に提供されていますが、逆の場合は次のコードを実行できます。
sed '/.\{2048\}/!d'。
sed: 1: "/.\{2048\}/d": RE error: invalid repetition count(s)(Mac OS X, 10.10.4)
gnu-sedでは、-rフラグを使用して、バックスラッシュとコンマを入力しないようにして、オープン間隔を定義できます。
sed -r "/.{2049,}/d" input.txt > output.txt
で:
間隔については、大きなパターンに一致しないようにするには、次のような行アンカーが必要です。
sed -r "/^.{32,64}$/d" input.txt > output.txt