Supongo que lo que quiere decir es que file2.txt
es un archivo de texto de formato libre -que puede contener instancias de las cadenas de la primera -columna de file1.txt
, y desea reemplazarlas por la correspondiente segunda -cadenas de columnas.
Si file1.txt
no contiene ningún carácter especial de expresión regular, entonces una forma bastante eficiente de hacerlo podría ser convertirlo en un script sed y luego aplicar el script sed al segundo archivo, es decir,
sed 's/.*/s,&,g/' file1.txt | sed -f- file2.txt
text text abc-abc-abc text text text aaa-aaa-aaa text text.
Alternativamente, (y esta vez suponiendo que las cadenas en file2.txt
están separadas por espacios en blanco )podría crear una tabla de búsqueda a partir de las entradas en file1.txt
y luego recorrer los campos de file2.txt
y hacer las sustituciones correspondientes:
awk -F, 'NR==FNR {a[$1]=$2; next} {for (i=1;i<=NF;i++) {if ($i in a) $i = a[$i]}} 1' file1.txt FS='[ \t]+' file2.txt
text text abc-abc-abc text text text aaa-aaa-aaa text text.
o
awk -F, 'NR==FNR {a[$1]=$2; next} {for (i=1;i<=NF;i++) {$i = $i in a? a[$i] : $i}} 1' file1.txt FS='[ \t]+' file2.txt
text text abc-abc-abc text text text aaa-aaa-aaa text text.