GnuWin32没有替换文件中的行

时间:2012-02-01 11:07:21

标签: 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

请帮忙。

2 个答案:

答案 0 :(得分:0)

@是什么意思?把它们留下来。

不要自行更换文件。

答案 1 :(得分:0)

正如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”表示“全局”并且可能是多余的,因此为了使代码尽可能高效,您应该将其删除,除非您希望任何1行文本包含多个文本您的搜索目标的副本。我把它留在原地,因为你的文件可能比你的问题所表明的更多。

最后,-e不会给sed命令增加太多,如果-i,它会搞乱使用。

我希望这会有所帮助。