【发布时间】:2017-10-02 14:12:26
【问题描述】:
我有一个大文件,其中一些行如下:
.... ....+*UNKNOWN*
.... ....+*UNKNOWN*
.... ....+*UNKNOWN*
.... ....+*UNKNOWN*
.... ....+*UNKNOWN*
.... ....+*UNKNOWN*
.... ....+*UNKNOWN*
.... ....+*UNKNOWN*
我想用 ...+PUNCT 替换 ....+UNKNOWN 部分
为此,我做了以下操作:
sed 's/\.\.\.\.\+\*UNKNOWN\*/\.\.\.\+PUNCT/g' myfile.out > myfile_result.out
但是,没有一条线消失。
grep -F '...+*UNKNOWN*' myfile.out
.... ....+*UNKNOWN*
.... ....+*UNKNOWN*
.... ....+*UNKNOWN*
.... ....+*UNKNOWN*
.... ....+*UNKNOWN*
.... ....+*UNKNOWN*
.... ....+*UNKNOWN*
.... ....+*UNKNOWN*
我找不到我的错误,你能帮我解决一下吗?
【问题讨论】:
-
您不能只在正则表达式中的每个非字母字符前面加上一个反斜杠,然后寄希望于最好的结果。您需要识别哪些字符是文字字符,哪些是元字符,哪些成为元字符通过转义它们并在您使用的任何工具的上下文中以及您提供的任何选项中适当地使用它们那也是。