【问题标题】:replace a word with contents of a txt file containing multiple lines of strings用包含多行字符串的 txt 文件的内容替换单词
【发布时间】:2013-10-21 15:26:30
【问题描述】:

您好,我在使用 awk 时遇到问题,我有两个文件 info.txt 和 final.txt。 info.txt 有一个唯一的编号,final.txt 有姓名地址通过电话电子邮件第二个姓名地址通过电话电子邮件。

我想用 info.txt 的内容替换 final.txt 中出现的单词“pass” 我现在正在使用这个。

awk -v f="info" 'BEGIN {while (getline < f) txt=txt $0 "\n"} /pass/ {sub("pass", txt)}   1' final.txt.tmp > final.txt.tmp

现在,每当一行中出现“pass”一词时,它会做什么,它将整行替换为我只想替换该单词的内容。

谢谢

【问题讨论】:

  • 请发布示例以及您喜欢输出的方式。
  • 看起来你弄乱了文件名:info vs. info.txt 和 final.txt.tmp(作为输入文件) vs final.txt。使用更正的文件名,它可以工作。另外,听起来你想要 gsub,而不是 sub。
  • 谢谢,我会再次解释我的问题,我的第一个文件 info.txt(包含唯一编号)和其他 final.txt(包含多行,其中一些单词需要替换为 info 中的唯一编号。文本)。示例 info.txt 有 123 和 final.txt 有 localhost?u=pass:p=pass ,我需要“通过”替换为文件“info.txt”的内容

标签: sed awk


【解决方案1】:

这可能对你有用(GNU sed):

 sed ':a;$!{N;ba};s/\n/\\n/g;s|.*|s/pass/&/g|' info.txt | sed -f - final.txt

这会从 info.txt 生成一个 sed 脚本,然后针对 final.txt 运行该脚本

【讨论】:

  • 没有工作 sed: 未终止 { sed: 无法打开 '-': 没有这样的文件或目录
  • 我正在寻找我的第一个文件 info.txt(包含唯一编号)和其他 final.txt(包含多行,其中一些单词需要用 info.txt 中的唯一编号替换)。示例 info.txt 有 123 而 final.txt 有 localhost?u=pass:p=pass ,我需要将“pass”替换为文件“info.txt”的内容
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-25
  • 2020-08-19
  • 2022-01-09
  • 1970-01-01
相关资源
最近更新 更多