我有一个带有键值条目的“数据库文件”,我有另一个文件,其中键出现在其他内容中。现在我想用我的键值文件的值替换那些关键字。例如:
有一个文件“keys.txt”带有“keyword space url”:
name1 https://maps.google.com
something http://www.domain.com/bla.php?value=500
blabla http://thisis.example.com/moooooar.asp
我有另一个文件“text.txt”,每行有一个或几个单词,如下所示:
notrelated somewhatrelated blabla
blabla unimportant
asdf asdf asdf name1 dadadada
结果我希望得到这样的东西:
notrelated somewhatrelated http://thisis.example.com/moooooar.asp
http://thisis.example.com/moooooar.asp unimportant
asdf asdf asdf https://maps.google.com dadadada
实际上我的问题与https://stackoverflow.com/questions/5283653/非常相似,但由于我正在使用URL(斜杠,冒号......),因此我提到的解决方案没有解决问题吗?
答案 0 :(得分:3)
awk '
NR==FNR {url[$1]=$2; next}
{for (i=1; i<=NF; i++) if ($i in url) $i=url[$i]; print}
' keys.txt text.txt
notrelated somewhatrelated http://thisis.example.com/moooooar.asp
http://thisis.example.com/moooooar.asp unimportant
asdf asdf asdf https://maps.google.com dadadada
答案 1 :(得分:0)
嗯,这样可行(但如果你的密钥中有逗号,可能会破坏):
while read k v; do sed -e "s,$k,$v,g" -i text.txt; done < keys.txt