sed无法在Windows中的脚本文件中工作

时间:2010-11-01 03:35:32

标签: windows sed

我曾经写过像这样的简单的sed命令

s/==/EQU/

我在命令行中运行它:

sed 's/==/EQU' filename

效果很好,用'EQU'替换'==',但是当我将命令写入名为replace.sed的脚本文件时,以这种方式运行它:

sed -f replace.sed filename

有错误,说

sed: file replace.sed line 1: unknwon option to 's'

我想问的是我的脚本文件replace.sed在Windows中运行时是否有任何问题?

1 个答案:

答案 0 :(得分:3)

在跟踪/之后,未知选项几乎总是一个流氓字符(从命令行版本中删除,顺便这样它应该抱怨未终止的命令)。

再次看一眼replace.sed。你最后可能会有一个有趣的角色,如果你忘了删除它,可能包括',甚至包括 CTRL-M DOS风格的行结尾,尽管CygWin似乎处理这没关系 - 你还没有指定你正在使用哪个 sed(这可能有帮助)。


好的,根据您的编辑,看起来我的散点图建议之一是正确的:-)由于CR / LF行结尾,您在行尾有 CTRL-M

  

*.sed文件的每一行的末尾,有一个'CR\LF'对,问题,但默认情况下你看不到它,我用记事本手动删除它们并修复问题。但是我在Windows中编辑新文本文件时没有找到自动删除或不包含'new-line'样式的方法。

你可能希望得到更强大的编辑器,如Notepad ++或gVim(我最喜欢的),但事实上,你有一个工具可以摆脱这些字符:-)它被称为sed

sed 's/\015//g' replace.sed >replace2.sed

应该删除文件中的所有CR字符,并为您提供可用于实际工作的replace2.sed