Использование сценария оболочки:
#!/bin/sh
file1=./file_1
file2=./file_2
while read -r n; do
v=$(awk -v n="$n" '$2 ~ n {print $1}' "$file1")
printf '%s "%s"\n' "$v" "$n"
done <"$file2"
обратите внимание:это выведет весь вывод на стандартный вывод.
Будет прочитана каждая строка в file_2
и установлено значение n
. Затем он прочитает file_1
и найдет строку, в которой значение n
существует в столбце 2, и напечатает столбец 1, установив его в переменную v
. Затем он напечатает n
и v
в нужном вам формате, который можно перенаправить по вашему желанию.
Чтобы создать файл:
#!/bin/sh
file1=./file_1
file2=./file_2
while read -r n; do
v=$(awk -v n="$n" '$2 ~ n {print $1}' "$file1")
printf '%s "%s"\n' "$v" "$n"
done <"$file2" > file_3
Однако, поскольку вы хотите добавить эти значения в file_2
, вы можете просто перезаписать file_2
на file_3
, однако я рекомендую выполнить вышеуказанное перед этим, чтобы убедиться, что он дает правильные результаты. Также не помешает сделать резервную копию file_1
и file_2
перед внесением каких-либо изменений.
#!/bin/sh
file1=./file_1
file2=./file_2
while read -r n; do
v=$(awk -v n="$n" '$2 ~ n {print $1}' "$file1")
printf '%s "%s"\n' "$v" "$n"
done <"$file2" > file_3
mv file_3 "$file2"