РЕДАКТИРОВАТЬ2: Добавление ответа готи сэр тоже здесь.
awk -F= 'NR==FNR{a[$1]=$2;next} {for(i in a){gsub(i,a[i])}} 1' mapfile inputfile
РЕДАКТИРОВАТЬ: В соответствии с предложением @ghoti sir нетрудно кодировать строку KEY
номер поля здесь он будет искать строку и затем изменять ее.
awk 'FNR==NR{a[$1]=$2;next} {for(i=1;i<=NF;i++){if($i~/KEY[0-9]+/){$i=a[$i]}}} 1' FS="=" environment.properties FS=" " input.txt
ИЛИ используя match
функцию awk
здесь.
awk '
FNR==NR{
a[$1]=$2;
next}
match($0,/KEY[0-9]+/){
print substr($0,1,RSTART-1) a[substr($0,RSTART,RLENGTH)] substr($0,RSTART+RLENGTH);
next
}
1' FS="=" environment.properties FS=" " input.txt
Это задание для awk
, не могли бы вы попробовать выполнить следующие действия и сообщить мне, поможет ли это вам.
awk 'FNR==NR{a[$1]=$2;next} {$NF=a[$NF]} 1' FS="=" environment.properties FS=" " input.txt
Вывод будет следующим.
sample file contains VALUE1
sample file contains VALUE2
sample file contains VALUE3
sample file contains VALUE4
sample file contains VALUE5