我有两个问题需要帮助。我正在使用Cygwin和一个Unix新手。
1)我有一个执行SED命令的shell脚本。在我的名为master.sh的脚本中,我有以下内容
sed -nrf remove.sed < code.tp4 > code.tp5
remove.sed有一行
/ INCLUDE /d
当我通过以下命令执行脚本时
bash master.sh
我收到以下错误
master.sh: line 12: $'\r':command not found
我不知道是什么引发了这个错误。
2)我的第二个问题是输出文件&#34; code.tp5&#34;最终&#34; code.tp5?&#34;。但是,使用Windows资源管理器时,问号似乎是 不可打印的角色。最令人困惑的部分是,当我通过命令提示符执行此操作时,我没有收到任何错误。任何帮助将不胜感激。
答案 0 :(得分:0)
你可以尝试:
sed -nr s/\r//;/ INCLUDE /d' < code.tp4 > code.tp5; sed 's/$/\r$/' code.tp5
命令's'用于替换。 '\ r'回车。所以s/\r//
将把回车换成零。之后,您将删除包含模式'/ INCLUDE / d'的行。并且:sed 's/$/\r$/' code.tp5
最后你将再次添加回车符,因此将再次成为DOS文本文件($
表示正则表达式的行尾)。 (Unix行结尾只是新行,而DOS cas回车和换行符。)