如何使用 Linux 终端删除字符串模式?

如何使用 Linux 终端删除字符串模式?

我想删除像这样的字符串模式

You should not remove this /*This is the part should remove*/ You
should not remove this

我想删除/*和里面的所有文本*/

答案1

为了授人以鱼而非授人以鱼,我将向您提供正则表达式的教程链接。 正则表达式.info/quickstart.html

如果您需要快速解决方案,请执行以下操作:在 vim 中打开文件,然后输入以下内容:

:s/\/\*.*?\*\/ /g

这应该会用空格替换所有以 /* 开头和以 */ 结尾的字符串。我首先将你链接到正则表达式教程,以防我弄错了我写的表达式。要么阅读教程并编写自己的命令,要么在使用上面的行之前进行备份。

答案2

尝试以下快速而肮脏的 sed 行:

sed -e 's@/\*.*\*/@@' file

这将向您显示输出,但实际上不会修改文件,一旦您运行它并确认它做出了您想要的更改,然后将其放在-i前面-e以告诉它在适当位置更改文件。

它实际上会将/*和之间的所有内容*/替换为空(本质上是删除它),但它也会获取/*和部分。*/

我首先提供不修改的方法,以防我弄坏了正则表达式(占用内存,并且无法在当前机器上访问 sed 进行快速测试)。还请注意,如果要删除的文本跨行,则此方法将不起作用,因为 sed 分别对每一行进行操作。如果您需要一个程序来同时处理多行文本,则需要 awk 或 perl(我对这两个都不太了解,无法提供代码建议)。

相关内容