Tengo un "archivo de base de datos" con entradas de clave-valor y tengo otro archivo donde aparecen las claves entre otros contenidos. Ahora quiero reemplazar esas palabras clave con los valores de mi archivo de clave-valor. Ejemplo:
Hay un archivo "keys.txt" con "url de espacio de palabras clave":
name1 https://maps.google.com something http://www.domain.com/bla.php?value=500 blabla http://thisis.example.com/moooooar.aspTengo otro archivo "text.txt" que tiene una o varias palabras por línea, así:
notrelated somewhatrelated blabla blabla unimportant asdf asdf asdf name1 dadadadaY como resultado quiero tener algo como esto:
notrelated somewhatrelated http://thisis.example.com/moooooar.asp http://thisis.example.com/moooooar.asp unimportant asdf asdf asdf https://maps.google.com dadadadaEn realidad, mi pregunta es muy similar a https://stackoverflow.com/questions/5283653/ pero ninguna de las soluciones mencionadas funcionó, ya que estoy trabajando con URL (barras, dos puntos...), ¿supongo?
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 dadadadaBueno, esto funciona (pero probablemente se romperá si tiene comas en sus claves):
while read kv; do sed -e "s,$k,$v,g" -i text.txt; done < keys.txt