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_MAX
shell),但可能支持更长的记录。在 macOS 上,LINE_MAX
是 2048。
归档时间: |
|
查看次数: |
16054 次 |
最近记录: |