我正在使用带有单行的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
请帮忙。
答案 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
,它会搞乱使用。
我希望这会有所帮助。