Windows GnuWin32 sed不替换文件中的行

Windows GnuWin32 sed不替换文件中的行,windows,sed,cmd,Windows,Sed,Cmd,我在用一行txt文件测试sed实用程序 PJL COMMENT PREPRINTINFO : COPIES=1 我使用了以下模式,但没有替换文件中的行。但事实并非如此 H:\sed.exe -e "s/@PJL COMMENT PREPRINTINFO : COPIES=1/@PJL COMMENT PREPRINTINFO : COPIES=2/g" H:\test.txt H:\test.txt 请帮忙。这个@是什么意思?把他们排除在外 并且不要自己替换上面的文件。正如Tichodrom

我在用一行txt文件测试sed实用程序

PJL COMMENT PREPRINTINFO : COPIES=1
我使用了以下模式,但没有替换文件中的行。但事实并非如此

H:\sed.exe -e "s/@PJL COMMENT PREPRINTINFO : COPIES=1/@PJL COMMENT
PREPRINTINFO : COPIES=2/g" H:\test.txt H:\test.txt

请帮忙。

这个
@
是什么意思?把他们排除在外


并且不要自己替换上面的文件。

正如Tichodroma所指出的,使用“/”或“@”作为正则表达式分隔符,而不是两者都使用。在搜索目标字符串中包含“@”时,它必须在文件中才能匹配

更重要的是,为什么要重复
sed
cmd末尾的文件名

要么你想要

H:\sed.exe -e "s/PJL COMMENT PREPRINTINFO : COPIES=1/PJL COMMENT PREPRINTINFO : COPIES=2/g" H:\test.txt > H:\test2.txt
或者如果您的sed支持-i选项

H:\sed.exe -i "s/PJL COMMENT PREPRINTINFO : COPIES=1/PJL COMMENT PREPRINTINFO : COPIES=2/g" H:\test.txt
命令末尾的“g”表示“全局”,可能是多余的,因此为了使代码尽可能高效,应该删除它,除非您希望任何一行文本包含多个搜索目标副本。我把它放在原处了,因为你可能对你的文件做了比你的问题所表明的更多的事情


最后,
-e
不会给sed命令增加太多内容,如果
-i
,它会破坏sed命令的使用


我希望这会有所帮助。

“最后,
-e
不会给sed命令增加太多内容,如果
-I
,它会影响使用。”。这是我第一次听说这样的事情。对货运邪教说不,;请阅读手册页。