У меня есть 2 файла. Я хочу найти указанное c содержимое из файла 2 и заменить его в файле 1, где это содержимое соответствует.
Содержимое файла 1:
// vev1 Par/abc/a_searched_content_place_INT
// vev2 Par/abc/b_searched_content_place_INT
Содержимое файла 2:
// Vev Inst: 'Par/pgh/a_searched_content_inst'
// Vev Inst: 'Par/pgh/b_searched_content_inst'
Здесь сценарий должен автоматически искать «a_searched_content», как экземпляры в файле 1. (Это содержимое между last / и «_place_INT»). Затем он должен найти строки с «a_searched_content» из файла 2 и заменить в файле 1.
Ожидаемый выходной файл:
// vev1 'Par/pgh/a_searched_content_inst'
// vev2 'Par/pgh/b_searched_content_inst'
Я попробовал следующий код:
awk -F "[ =:,]" '
FNR==NR { a[$4]=$0; next }
$2 in a {
split(a[$4],b);
for (i=3;i<=NF-1;i+=2)
for (j=2;j<=length(b)-1;j+=2)
if ($(i+1) == b[j])
line = (line ? line "," : "") $i ":" b[j+1];
print $1 "=" line; line = ""
}' file1 file2