使用sed读取文件。为什么我会收到“sed: -e 表达式 #1, char 11: r/R/w/W 命令中缺少文件名”?

问题描述 投票:0回答:1

我有一个文件,其中一行以

Version:
开头。我试图从 shell 中检测这样的行内容,最后我使用了

grep 'Version:' filename

但之前,我尝试使用

sed
读取命令但没有成功。

sed '/Version:/r' filename
sed: -e expression #1, char 11: missing filename in r/R/w/W commands

为什么我会收到此错误消息?我做错了什么?

bash sed grep
1个回答
0
投票

r
命令的语法需要一个参数。这可能根本不是您想要做的,而是命令

sed '/Version/r /tmp/foo' filename

会将

/tmp/foo
的内容插入到
/Version/
中与
filename
匹配的任何行之前,并将结果输出到标准输出。

换句话说,

sed
已经知道如何读取输入文件,就像
grep
一样;
r
命令允许您提取 附加 文件的内容。

要简单地打印匹配行(而不是其他行),

sed
语法将是

sed -n '/Version/p' filename

其中

-n
选项禁用每行的默认打印,而
p
命令表示打印与条件匹配的行。

© www.soinside.com 2019 - 2024. All rights reserved.