如何使用sed命令使用正则表达式过滤fil?

时间:2018-03-01 10:43:54

标签: shell unix sed

任何人都可以告诉我这两个命令的作用吗?

sed -i 's!{[^{]*\;}! !' file.txt

sed -i 's!{[^{]*{! !' file.txt

我找到了这个例子,我无法弄清楚运行代码时提供的结果。

1 个答案:

答案 0 :(得分:0)

sed -i 's!{[^{]*\;}! !' file.txt
  • sed -i表示就位,file.txt可能会被更改。
  • '!小号.... ....'!替换命令,用感叹号拆分。大多数情况下你会看到使用斜杠,但是sed接受不同的字符,由第一个字符定义,在s之后。请注意,感叹号会在shell中产生问题。由于没有斜线,无论是图案还是替代,我都没有看到使用它们的理由。
  • {[^ {] * \;}匹配的模式
  • ' '替换最终是一个空白,如果小心转移,但可能是一个标签或时髦的半空间或其他东西。

现在复杂的表达是什么:

  • {[^ {] * \;}一对包含......
  • 的花括号
  • [^ {]一个否定组,否定是第一个char是' ^&#39 ;,所以任何不是开口,大括号,然后是
  • 量词*,表示任意数字,包括0,后跟
  • 退格,这是一种掩盖工具,经常如此。
  • 和分号。

所以

  • ' {AAAAA;}'应该匹配
  • ' {A;}'应该匹配
  • ' {;}'应该匹配
  • ' {};}'应该匹配
  • ' {{;}'
  • 不应该匹配
  • ' {A}'
  • 不应该匹配
  • ' {A}'
  • 不应该匹配
相关问题