【发布时间】:2019-02-27 23:34:36
【问题描述】:
我相当精通使用 sed 的内联函数,以及它的替换能力以及使用不同字符作为其函数的分隔符,但我现在发现自己使用“r”函数来添加sed 在目标文件中找到字符串后追加文件的内容。我相信这被称为“零地址或单地址”命令。
很简单,如果一个名为“letters”的文件包含
abc
def
ghi
而“数字”包含
123
然后使用
sed -i "def r numbers" letters
导致“字母”变成
abc
def
123
ghi
所以,我的问题是:如果“字母”包含正斜杠会怎样?例如, letters2 包含:
/abc/def/ghi
/def/ghi/jkl
/ghi/jkl/mno
我想在“/def/ghi/jkl”字符串之后附加“数字”?最初认为一个简单的
sed -i '/def/ghi/jkl r numbers' letters2
就足够了,但当然使用正斜杠,它会使事情变得更加复杂,考虑到这会导致“命令后的额外字符”错误。在这种情况下,您似乎不能像在(例如)事物的替换方面那样表示符号。我已经尝试过(以多种不同的方式),例如:
sed -i '@/def/ghi/jkl@ r numbers' letters2
但我不断收到“未知命令:@”错误。
我在网上找不到任何东西,也找不到关于如何克服这个问题的手册。任何帮助将不胜感激!
【问题讨论】: