У меня это в файле file.txt
FORM: lookupfile Версия: 1 LookupFile: «$ i»Как я могу найти это в файле и добавить переменную b к $i.
Итак, пример
INPUT
FORM: lookupfile Версия: 1 LookupFile: «$ i»
FORM: lookupfile Версия: 1 LookupFile: 4
Предположим, что my b = 300
FORM: lookupfile Версия: 1 LookupFile: 304awk -v b=$b -F: '{ if ( $1 == "LookupFile" ) $0=$1":"($2+b); print $0 }' file.txt
Это напечатает всю строку и изменит строку только тогда, когда $ 1 является строкой LookupFile. Разделитель «:»
Использование gawk
b=300; gawk -v "b=$b" '/^LookupFile/ {line=gensub (/(^LookupFile:.*)[0-9]+/,"\\1",$0); number=gensub(/^LookupFile:([0-9]+)/,"\\1",$0); printf "%s",line; printf "%s",number+b"\n"} !/^LookupFile/ {print}' foo
Пример
$ cat foo
FORM: lookupfile
Version: 1
LookupFile:4
$ b=300; gawk -v "b=$b" '/^LookupFile/ {line=gensub (/(^LookupFile:.*)[0-9]+/,"\\1",$0); number=gensub(/^LookupFile:([0-9]+)/,"\\1",$0); printf "%s",line; printf "%s",number+b"\n"} !/^LookupFile/ {print}' foo
FORM: lookupfile
Version: 1
LookupFile:304
Использование Perl:
perl -pe "s/^(LookupFile:)(.*)/\$1.($b+\$2)/e" file.txt