bash delfile.sh test.txt I
where delfile.sh是shell脚本,test.txt是文本文档,“ i”是删除整个行的单词。
test.txt中的文字为:
Hello Friend!
My Good Name Is
Johnny Jack.
I come from the
planet Earth
and I live in Italy.
I like Pasta.
Delete Lines that contain Given Word:
Before Deletion:
cat: 'test.txt'$'\r': No such file or directory
: No such file or directory
After Deletion:
Hello Friend!
My Good Name Is
Johnny Jack.
I come from the
planet Earth
and I live in Italy.
I like Pasta.
您可以看到,最后一个cat $ 1能够打印文件的内容,但是即使所有文件都在同一文件夹中,第一个cat和sed命令即使所有文件都会给出“否此类文件或目录”的错误。
i我尝试在另一个系统上运行相同的设置,并且在那里工作正常,但是在我经常使用的设置上不使用。我尝试了
sed -i 's/\r//' text.txt
将ASCII文本带有CRLF线终结器将其转换为ASCII文本,但这也没有用。我在Internet上发现的所有解决方案都表明,问题与Windows和Linux的处理方式不同,但是看到该代码在另一个系统上运行得很好,最后一个CAT命令也有效,我怀疑那是案件
如果Shell文件仅包含sed -i.bak "/$2/d" "$1"
,则我的文件被编辑并且包含“ i”的行被删除,但是一旦另一个CAT $ 1到达,最后一个将执行最后一个,并且上述文件会出现错误。
如果任何人都可以帮助解决这个问题,这将不胜感激。
最有可能您的外壳脚本在命令中具有CR或空格失败(第一个
cat
)用“ vi” - 键入您的脚本 - 并执行“设置列表”。