【问题标题】:Insert contents of a file against a pattern using sed使用 sed 根据模式插入文件内容
【发布时间】:2018-03-27 18:32:11
【问题描述】:

我想在模式匹配后插入文件的内容。我尝试了以下命令,但没有成功

sed '/ghi\(\)/ r file2.txt' file1.txt

file1.txt的内容是:

abc
def
ghi()
jkl

file2.txt的内容是:

hello world!
my name is xyz
i live in abc city

想要的输出:我希望file1.txt的内容变成:

abc
def
ghi()
hello world!
my name is xyz
i live in abc city
jkl

我是否缺少任何参数?如何做到这一点?

【问题讨论】:

  • sed --version?
  • 什么不起作用?确切的错误是什么?
  • 我在控制台上看到了所需的输出,但内容没有插入到实际文件中,即 file1. File1 保持不变。 N 该文件具有写入权限,因为插入了其他内容

标签: shell sed grep


【解决方案1】:

你需要-i来替换in place,你也可以使用.bak来做一个.bak的备份文件

sed -i.bak '/ghi\(\)/ r file2.txt' file1.txt

它将改变file1.txt的内容并创建file1.txt.bak进行备份

【讨论】:

    【解决方案2】:

    您可以关注awk 可能对您有所帮助。

    awk '/ghi()/{print;system("cat file2.txt");next} 1' file1.txt
    

    还关注sed 对我来说也很好用,我有 GNU sed 4.2.1

    sed '/ghi()/r file2.txt' file1.txt
    

    【讨论】:

    • 你能阅读我上面关于问题是什么的评论并提出一些建议吗?
    猜你喜欢
    • 1970-01-01
    • 2012-06-29
    • 2019-03-02
    • 1970-01-01
    • 1970-01-01
    • 2019-06-07
    • 2019-05-12
    • 1970-01-01
    • 2011-08-20
    相关资源
    最近更新 更多