Answers:
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
)