使用sed命令,删除文件中以LOG开头,以;结尾的字符串,需要支持跨行删除,LOG是作为行的起始字符,例如#define LOG_COLOR就不应该匹配到,而LOG(FATAL)开始的行需要被匹配到
时间: 2024-03-13 22:46:34 浏览: 10
可以使用以下的 `sed` 命令删除文件中的符合条件的字符串:
```
sed -i '/^[^#].*LOG.*;/d' file.txt
```
解释:
- `-i` 表示直接修改文件内容,不需要输出到终端中。
- `/^[^#].*LOG.*;/` 表示匹配以 `LOG` 开头,以 `;` 结尾的行,且该行不以 `#` 开头(即不是注释行)。
- `d` 表示删除匹配到的行。
这个命令会删除所有匹配到的行,包括跨行的情况。但是,如果文件中有其他行中间包含了 `LOG` 和 `;`,也会被误删。因此,建议在操作前备份文件,以免误操作造成不可逆的损失。
相关问题
使用sed命令,删除文件中以LOG开头,以;结尾的字符串,需要支持跨行删除,且L要作为这一行的第一个字母
可以使用以下的sed命令来实现:
```
sed -i ':a;N;$!ba;s/\n/ /g;s/L.*LOG.*;//g' filename
```
解释一下这个命令:
- `-i` 表示直接在原文件中修改,而不是在终端输出修改结果。
- `:a;N;$!ba;` 表示将多行合并为一行,`N` 和 `$!` 分别表示读取下一行和判断是否到了最后一行,`ba` 表示跳转到标签 `:a`。
- `s/\n/ /g` 表示将多行合并为一行之后,将换行符替换为空格。
- `s/L.*LOG.*;//g` 表示删除以 L 开头,以 LOG 结尾,中间任意字符,以 ; 结尾的字符串。`g` 表示全局替换,不只是替换每行的第一个匹配。
- `filename` 表示要处理的文件名。
sed命令删除文件中空白行
使用sed命令删除文件中的空白行可以使用以下命令:sed '/^$/d' filename。其中,^表示行首,$表示行尾,/^$/表示匹配空白行,d表示删除匹配到的行。这个命令会删除文件中所有的空白行。
另外,如果文件开头有多个空白行需要删除,可以使用以下命令:sed '/./,$!d' filename。其中,/./,$表示从第一个非空白行到文件结尾的区间,!d表示删除不在这个区间内的行。
相关推荐
![text/x-c++](https://img-home.csdnimg.cn/images/20210720083646.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)