Sed 未按预期工作

Eri*_*tto 5 sed

我想使用此脚本的目的是用文件“question.txt”的内容替换文件中字母Q 的所有实例。相反,文件中Q 的所有实例都消失了,并且“question.txt”的内容打印在新文件的底部。

有任何想法吗?

sed -i.bkp '/Q/{
s/Q//g
r /Users/ericbrotto/Desktop/question.txt
}' Commision.txt 
Run Code Online (Sandbox Code Playgroud)

编辑 1

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

在此处输入图片说明

use*_*own 1

我想我找到了原因。

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

资料来源:

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


cat kuh.dat 
Die dumme
Kuh
Run Code Online (Sandbox Code Playgroud)

文件名“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
Run Code Online (Sandbox Code Playgroud)

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

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

Not q
And  again
And again not
Run Code Online (Sandbox Code Playgroud)

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