例如,我有这个文本文件:
use
user_99
12345
+10k 行...
我想从命令行删除那些少于 4 个字符的命令,我已经在谷歌中搜索过了,但没有结果。
有任何想法吗? : )
我还想删除开头有 3 个以上数字的行。
答案1
你可以创建一个至少有 4 个字符的 GNU sed 正则表达式作为.{4,}
- 然后删除所有行除了至少有 4 个字符的:
sed -r '/.{4,}/!d' file
类似地,如果一行开头有超过 3 个连续的数字,则^[0-9]{4,}
删除所有这些
sed -r '/^[0-9]{4,}/d' file
您可以使用-e
或组合它们;
sed -r -e '/.{4,}/!d' -e '/^[0-9]{4,}/d' file
或者
sed -r '/.{4,}/!d ; /^[0-9]{4,}/d' file
请注意,.
匹配空格字符以及非空格字符 - 如果这不是您想要的,那么您可以通过替换.
字符范围或 POSIX 类(例如)来更改它[[:alnum:]]
。
答案2
sed 或 awk 是不错的选择:
sed -rn '/^.{0,3}$/n; /^[0-9]{3,}/n; p' file
awk --re-interval 'length > 3 && !/^[0-9]{3,}/' file