快速查找和替换

时间:2013-12-23 07:55:43

标签: bash shell

我有一个文本文件,其中包含两列,其中包含要搜索的字符串,另一列是相应的替换。因此,使用此文件A,我必须替换文件B的内容。找到文件B中文件A的第一列对应的字符串,并将其替换为文件A的相应第二列。

我怎样才能在bash中完成

2 个答案:

答案 0 :(得分:1)

awk 'NR==FNR{p[NR]=$1;r[NR]=$2;n=NR;next}{for(i=1;i<=n;i++)gsub(p[i],r[i])}7' A B

没有测试,但应该工作。至少你应该明白这一点。

答案 1 :(得分:0)

您可以使用此Bash sript:

进行尝试
A=path/to/A
B=path/to/B
del=" "

while read line; do
  pattern=`echo $line | cut -d "$del" -f 1`
  substitution=`echo $line | cut -d "$del" -f 2`
  sed -i "s/$pattern/$substitution/g" $B
done < $A

需要考虑的一些事项:

  • AB应分别保存文件A和B的文件名
  • del应该是文件A
  • 中列之间的单字符分隔符
  • 如果文件A中的patternsubstitution列包含斜杠,则需要修改sed命令并将/替换为任何一个都不会出现的内容模式或替代,例如!