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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用sed命令使用正则表达式过滤文件?相关的知识,希望对你有一定的参考价值。

谁能告诉我这两个命令有什么作用?

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

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

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

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

现在复杂的表达是什么:

  • {[^ {] * ;}一对包含......的文字大括号
  • [^ {]一个否定组,否定是第一个字符是'^',所以任何不是开口,大括号,然后是
  • 量词*,表示任意数字,包括0,后跟
  • 退格,这是一种经常使用的掩蔽工具。
  • 和分号。

所以

  • '{aaaaa;}'应匹配
  • '{a;}'应匹配
  • '{;}'应匹配
  • '{};}'应匹配
  • '{{;}'不匹配
  • '{a}'不应该匹配
  • '{a}'不应该匹配

以上是关于如何使用sed命令使用正则表达式过滤文件?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 sed 命令正则表达式在文件中查找第一个空行并删除

详解Shell脚本:sed命令工具 ,awk命令工具

Linux 基础正则表达式

Linux之sed命令常见用法

sed命令和正则表达式

Linux grep、egrep使用命令详解