【问题标题】:Replace occurrences of string in a file替换文件中出现的字符串
【发布时间】:2016-06-24 14:13:43
【问题描述】:

我是 shell 脚本的新手,我在这里遇到了一些情况。我有一个文本文件(我们称之为text)。我有file1,其中包含一个字符串,需要将文件text 中的字符串替换为file2 中的字符串。我怎么能做出这样的改变?此外,所有三个文件都可以包含特殊字符,file1file2 只有一行。结果应保存在单独的文件中。

我尝试过使用sedtr 命令,但我不确定如何让它们使用文件中的字符串。

【问题讨论】:

    标签: shell sed tr


    【解决方案1】:

    有一种更好的方法可以不使用cat,它直接重定向文件输出而不产生外部可执行文件:

    sed "s/$(<file1)/$(<file2)/g" < text > new_text
    

    【讨论】:

      【解决方案2】:

      tr 不合适:它映射字符,而不是单词。

      要将命令的结果输入命令行,请使用反引号。要使用命令获取文件的内容,请使用cat

      有几种方法可以使用sed 来使用正则表达式替换字符串:我首选的方法是“s/from/to/g”。

      把这一切加起来给你:

      cat text | sed "s/`cat file1`/`cat file2`/g" > newtext
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-11-19
        • 1970-01-01
        • 1970-01-01
        • 2021-11-17
        • 2023-03-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多