根据字典替换文本

use*_*587 4 unix linux perl awk sed

我需要做一些类似于这篇文章的事情(但有一点扭曲).这就是我要问的原因.

unix shell:用字典替换

我有一本字典(dict.txt).它是空格分隔的,它的内容如下:

V7动量

B6广达

....

(在某种意义上,第一列是键,第二列是值)

我有一个用户文件(user.txt),它包含键的出现(V7,B6等).扭曲是键不在其自己的列中(因此上述帖子中的方法不适用).

用户文件(user.txt)可以作为字符流查看.我只想替换所有出现的键(例如,V7),无论它们是由空间限制还是由字典中查找的值(Momentum)限制其他字符.

例如:

"我们有V7作为输入" - >应该改为 - >"我们有动量作为输入"

"我们有一些东西_7输入" - >应该改为 - >"我们有一些东西 - 输入"

sli*_*nov 9

用法:awk -f foo.awk dict.dat user.dat
http://www.gnu.org/software/gawk/manual/html_node/String-Functions.html
http://www.gnu.org/software/gawk/manual/html_node/Arrays.html

NR == FNR {
  rep[$1] = $2
  next
} 

{
  for (key in rep)
    gsub(key, rep[key])
  print
}
Run Code Online (Sandbox Code Playgroud)