使用sed的r命令读取文件时出现缺失文件名报错的原因
sed执行r命令报错的原因及修正
错误根源
你用的sed '/Version:/r' filename不符合r命令的语法规范。sed的r命令是读取另一个文件的内容,插入到匹配到的行之后,它的语法必须是:
/匹配正则/r 要读取的文件名
你的命令里r后面没有指定要读取的目标文件名,sed无法完成读取操作,所以抛出了missing filename in r/R/w/W commands的错误。
你的需求对应的正确sed写法
你要的是提取文件中以Version:开头的行,这时候应该用sed的打印命令p,配合-n参数只输出匹配的行,命令如下:
sed -n '/Version:/p' filename
这个命令和你最终用的grep 'Version:' filename效果完全一致。
补充:sed r命令的正确用法示例
如果确实需要用r命令,比如想在匹配到Version:的行后面插入另一个文件extra.txt的内容,命令应该是:
sed '/Version:/r extra.txt' filename
内容的提问来源于stack exchange,提问作者iago
相关产品推荐
相关产品推荐

