sed命令将字符追加到错误消息的末尾

时间:2019-07-12 13:36:50

标签: bash sed

我正在尝试制作一个脚本,该脚本遍历文件提供的路径列表并编辑每个文件中的URL,但是遇到了一个奇怪的问题。这是一个可复制的示例。

read -r line < paths.txt
echo $line
sed -i 's/word/otherword/' $line

路径来自path.txt,其中仅包含一行,其中一行用换行符读取bat.properties

脚本的输出如下。

$ bash urlReplacer.sh
bat.properties
: No such file or directoryies

作为参考,在这种情况下sed产生的错误通常为sed: No such file or directory。通过更改bat.properties行,我已经确认“属性”中的“ ies”是附加到错误末尾的部分,但我真的不知道丢失的“ sed”。您还可以看到,bat.properties读起来很完美。我猜这是sed滥用的问题,但我不确定问题出在哪里。

1 个答案:

答案 0 :(得分:3)

我认为path.txt具有DOS行尾,也称为\r^M
首先或在脚本中将其删除。您可以使用dos2unixtr -d '\r'或:

IFS=$'\r' read -r line : < paths.txt
echo "$line"
sed -i 's/word/otherword/' "$line"

我用line引用了带空格的文件名。