sed 多个正则表达式删除匹配的行
时间: 2023-10-02 14:06:22 浏览: 41
可以使用 `sed` 的 `-e` 参数来指定多个正则表达式,例如:
```
sed -e '/pattern1/d' -e '/pattern2/d' file.txt
```
这个命令会删除匹配 `pattern1` 和 `pattern2` 的行。如果需要更多的模式,可以继续使用 `-e` 参数添加。
另外,也可以使用分号将多个命令放在同一行中:
```
sed '/pattern1/d; /pattern2/d' file.txt
```
这个命令与上面的命令等价,同样会删除匹配 `pattern1` 和 `pattern2` 的行。
相关问题
linux中sed正则表达式
在Linux中,sed是一个非常强大的文本处理工具,可以与正则表达式相结合使用。sed中的正则表达式用于匹配和操作文本中的模式。
在sed中,正则表达式可以用于以下几种操作:
1. 匹配行:使用正则表达式匹配满足条件的行。
2. 替换文本:使用正则表达式匹配并替换文本。
3. 删除行:使用正则表达式匹配并删除满足条件的行。
4. 插入和追加文本:在满足条件的行之前或之后插入或追加文本。
5. 改变行:使用正则表达式修改满足条件的行。
在sed中,正则表达式使用特定的语法来表示不同的模式和操作。一些常用的正则表达式的语法包括:
1. 元字符:用于表示特殊的字符和字符类,如.表示任意字符,*表示前一个字符的零个或多个重复。
2. 字符类:用于匹配一组字符,如[a-z]表示小写字母,[0-9]表示数字。
3. 量词:用于指定字符或字符类的重复次数,如?表示零次或一次,+表示一次或多次,{n}表示精确重复n次。
4. 锚点:用于指定匹配的位置,如^表示行的开头,$表示行的结尾。
5. 分组和引用:用于将模式分组,并在替换中引用分组。
举个例子,假设我们有以下文本文件(luffycity.txt):
His name is chaoge.
I teach Linux.
My linux is good.
I like linux.
I like linux very much.
My telphone is 00000000
His qq is 88888888.
His website is http://pythonav.cn.
如果我们想在每行下面插入"---",可以使用以下sed命令:
sed 'a ---' luffycity.txt
使用正则表达式删除指定行开头的任意多空格
你可以使用正则表达式结合文本编辑工具来删除指定行开头的任意多空格。下面以使用 Sed 命令为例,演示如何实现:
```shell
sed -i '/^[[:space:]]*/d' filename.txt
```
上述命令会直接修改 `filename.txt` 文件,删除所有以任意多空格开头的行。
解释一下这个命令的含义:
- `sed` 是一个流编辑器,用于对文本进行编辑和转换。
- `-i` 参数用于直接修改文件,而不是将修改结果输出到标准输出。
- `/^[[:space:]]*/` 是一个正则表达式,其中 `^` 表示行的开头,`[[:space:]]*` 表示匹配任意多个空格或制表符。
- `d` 是 Sed 命令,表示删除匹配到的行。
请注意,这个命令会删除所有以任意多空格开头的行,包括行内有其他内容的行。如果你只想删除空行,请使用 `/^\s*$/d` 的正则表达式。