【问题标题】:Sed to replace a word from another file contentsed 替换另一个文件内容中的一个单词
【发布时间】:2014-03-15 11:13:30
【问题描述】:

您好,我正在向专家寻求 sed 的帮助, 基本上我 git 两个文件

First :- serial.txt
second :- info.txt

文件serial.txt 具有唯一信息。 并且文件info.txt

"http://irequestedserver1?u=user:p=123"
"http://irequestedserver2?u=user:p=123"
and more and more

我想用存储在第一个文件 serial.txt 中的信息替换用户词。

【问题讨论】:

    标签: linux sed


    【解决方案1】:

    如果您的 serial.txt 文件包含名称,那么您可以尝试以下操作:

    $ cat serial.txt 
    jaypal
    
    $ cat info.txt 
    "http://irequestedserver1?u=user:p=123"
    "http://irequestedserver2?u=user:p=123"
    
    $ awk 'NR==FNR{a[$1];next}{for (name in a) {sub(/u=.*:/,"u="name":")}}1' serial.txt info.txt 
    "http://irequestedserver1?u=jaypal:p=123"
    "http://irequestedserver2?u=jaypal:p=123"
    

    【讨论】:

    • 像魅力一样的伟大作品
    【解决方案2】:

    假设serial.txt 包含将用于info.txt所有行的单行信息:

     sed -r 's/\?u=[^:]+:/\?u='"$(tr -d '\n' < serial.txt)"':/' info.txt
    

    【讨论】:

    • 感谢回复,但它没有从serial.txt读取内容,它只是删除用户并将其留空。
    • @user2901827 您是否收到错误消息? serial.txt的具体内容和格式是什么?是否有额外的前导/尾随换行符?如果您 cat 以交互方式运行它与以交互方式运行 echo "$(&lt;serial.txt)" 会发生什么?我已经更新了我的答案,以在替换时从 serial.txt 中删除换行符 - 看看是否有帮助。
    【解决方案3】:

    使用 sed

    var=$(<serial.txt)
    sed -r "s/(u=user:)([^\"]*)/\1${var}/" info.txt
    

    【讨论】:

      猜你喜欢
      • 2015-03-02
      • 2021-04-26
      • 2013-01-10
      • 2021-10-04
      • 1970-01-01
      • 2017-05-25
      • 2018-07-21
      • 1970-01-01
      • 2017-09-10
      相关资源
      最近更新 更多