найти и заменить [закрыто]

-1
16.02.2018, 02:45
1 ответ

Supongo que lo que quiere decir es que file2.txtes 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.txtno 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.txtestán separadas por espacios en blanco )podría crear una tabla de búsqueda a partir de las entradas en file1.txty luego recorrer los campos de file2.txty 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.
1
28.01.2020, 05:10

Теги

Похожие вопросы