sed 未按预期工作

sed 未按预期工作

我想使用此脚本来替换该信件的所有实例在包含文件“question.txt”内容的文件中。相反,发生的情况是所有的实例文件中的内容消失,“question.txt”的内容将打印在新文件的底部。

有任何想法吗?

sed -i.bkp '/Q/{
s/Q//g
r /Users/ericbrotto/Desktop/question.txt
}' Commision.txt 

编辑1

我试图找出我拥有的版本,但继续得到这个:

在此输入图像描述

答案1

我想我找到了原因。

如果我在文件名后放置一些空格,则会搜索带有尾随空格的文件名。我可以这样重现问题:

资料来源:

cat q.dat
Q
Not q
And Q again
And again not


cat kuh.dat 
Die dumme
Kuh

文件名“kuh.dat”的工作示例:

sed '/Q/{
s/Q//g
r kuh.dat
}' q.dat

Die dumme
Kuh
Not q
And  again
Die dumme
Kuh
And again not

现在是失败的例子,带有“kuh.dat”。

sed '/Q/{
s/Q//g
r kuh.dat 
}' q.dat

Not q
And  again
And again not

由于文件名没有被引用,因此文件名末尾的空白被识别出来,这对我来说是一个很大的惊喜。而且在shell中是看不到的,所以我找了半天没有成功,这两个例子的区别在哪里。

相关内容