![如何使用 Linux 终端删除字符串模式?](https://linux22.com/image/1284341/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%20Linux%20%E7%BB%88%E7%AB%AF%E5%88%A0%E9%99%A4%E5%AD%97%E7%AC%A6%E4%B8%B2%E6%A8%A1%E5%BC%8F%EF%BC%9F.png)
我想删除像这样的字符串模式
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(我对这两个都不太了解,无法提供代码建议)。