我发现了一个有关如何删除行数超过2048个字符的问题:
问:但是如何删除少于4个字符的行?因此,删除文件中长度为1或2或3的行。
更新:感谢您提供许多好的答案,但我只能将其中一个标记为“好”
我发现了一个有关如何删除行数超过2048个字符的问题:
问:但是如何删除少于4个字符的行?因此,删除文件中长度为1或2或3的行。
更新:感谢您提供许多好的答案,但我只能将其中一个标记为“好”
Answers:
这是使用Vim的Ex模式和global
命令的Vim解决方案。
这与using非常相似sed
,只是需要转义一些特殊的字符('{','}')。
:g/^.\{,3\}$/d
使用Vim的Very Magic Regex模式(\ v),可以避免这种转义。
:g/\v^.{,3}$/d
另请参阅:帮助魔术
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 '/^.\?.\?.\?$/d' input.txt > output.txt
sed '/^.\{,3\}$/d'
不适用于BSD sed :sed: 1: "/^.\{,3\}$/d": RE error: invalid repetition count(s)
。sed -r版本在语法上有效,但不会删除行。