查找具有正则表达式的文字字符串,当搜索字符串包含特殊字符时,有时不像查找模式那么简单,但您可以通过一些杂耍来实现。
注意:该echo
命令必须适合CMD特殊字符,因此它需要^^
转义单个^
并^|
转义|
... ^
如果直接键入文件,则不需要CMD的转义字符。
步骤1:创建一个名为literal-srch-strings.txt的文件,其中包含要替换的确切(未更改)字符串。有两种方法可以创建此文件:
作为在CMD的命令行发出的命令,或作为.cmd / .bat 命令脚本中的命令。
echo sed -i^^/\\*$/$[{" ;"> literal-srch-strings.txt
使 字面-RCH-strings.txt自己,在你的文本编辑器。
在这种情况下,您不应该使用CMD-escape-character ^
,因此该行只有一个^
,而不是^^
- 这是因为您绕过了CMD-shell。
这是.txt文件中需要的内容(就像文件名所示:)
sed -i^/\\*$/$[{" ;"
步骤2:创建一个名为str-to-regex.sed的sed脚本, 将字符串转换为sed regex(s)。
请注意,相同的CMD-escape-character问题适用于此步骤,因此,有两种方法可以创建.sed文件:
^
作为命令:
echo s/[]\/$*.^^^|[]/\\^&/g; s/.*/s\/^&\/Ciao!\/g/> str-to-regex.sed
使用文本编辑器创建一个名为str-to-regex.sed的文件,其中包含:
s/[]\/$*.^|[]/\\&/g; s/.*/s\/&\/Ciao!\/g/
步骤3:运行sed-script,将字符串转换为sed regeular表达式,
并将其输出发送到另一个sed脚本,replace-text.sed,这将进行实际替换。
sed -f str-to-regex.sed literal-srch-strings.txt > replace-text.sed
第4步:运行replace-text.sed - 对于测试,我们可以使用literal-srch-strings.txt作为输入文件,但您当然可以使用任何输入文件。
sed -f replace-text.sed literal-srch-strings.txt
这是输出:
Ciao!
*/123
成"ciao!"