我知道我可以使用grep -v'^#'来删除以#开头的行
现在我遇到问题,当我尝试这样做去除[即.grep -v'^ ['甚至是sed'/ ^ [/ d'
为什么会发生这种情况?如何实现这一目标?
考虑这个测试文件:
$ cat brackets
keep
[remove]
Run Code Online (Sandbox Code Playgroud)
使用grep:
$ grep -v '^\[' brackets
keep
Run Code Online (Sandbox Code Playgroud)
要么:
$ grep -v '^[[]' brackets
keep
Run Code Online (Sandbox Code Playgroud)
使用sed:
$ sed '/^\[/d' brackets
keep
Run Code Online (Sandbox Code Playgroud)
要么:
$ sed '/^[[]/d' brackets
keep
Run Code Online (Sandbox Code Playgroud)
当计算机命令无法按预期工作时,查看错误消息非常重要.考虑:
$ grep -vE '^[' brackets
grep: Invalid regular expression
Run Code Online (Sandbox Code Playgroud)
该错误消息报告找到了无效的正则表达式.这是因为[是一个正则表达式活动字符:[...]用于定义字符列表.因此,如果正则表达式包含未转义的[,则它还必须包含匹配].有两种方法可以避免这种情况:
逃避它.如果[是正则表达式活动字符,则\[通常将其视为常规(非活动)字符.
把它放在一个字符列表中. [[]是一个只匹配一个字符的字符列表:[.
| 归档时间: |
|
| 查看次数: |
329 次 |
| 最近记录: |