for*_*sck 33
sed '/^.\{2048\}./d' input.txt > output.txt
Run Code Online (Sandbox Code Playgroud)
这是删除具有 2049 个或更多字符的行的解决方案:
sed '/.\{2049\}/d' <file.in >file.out
Run Code Online (Sandbox Code Playgroud)
正则表达式.\{2049\}将匹配任何包含 2049 个字符的子字符串的行(另一种说法是“至少 2049 个字符”)。该d命令从输入中删除它们,只在输出中生成较短的行。
BSD sed(例如 macOS)在\{...\}操作符中只能处理最多 256 次的重复计数(值RE_DUP_MAX; 见getconf RE_DUP_MAX外壳)。在这些系统上,您可以改为使用awk:
awk 'length <= 2048' <file.in >file.out
Run Code Online (Sandbox Code Playgroud)
sed从字面上模仿解决方案awk:
awk 'length >= 2049 { next } { print }' <file.in >file.out
Run Code Online (Sandbox Code Playgroud)
请注意,任何awk实现只能保证能够处理长度最多为LINE_MAX字节的记录(参见getconf LINE_MAXshell),但可能支持更长的记录。在 macOS 上,LINE_MAX是 2048。