Добавление числа к уже существующей переменной sed / grep / awk

У меня это в файле 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: 304
1
задан 24 June 2015 в 12:48

3 ответа

awk  -v b=$b -F: '{ if ( $1 == "LookupFile" ) $0=$1":"($2+b); print $0 }' file.txt

Это напечатает всю строку и изменит строку только тогда, когда $ 1 является строкой LookupFile. Разделитель «:»

3
ответ дан 23 May 2018 в 19:32
  • 1
    Он должен напечатать сумму $b и текущее значение (4) – kos 24 June 2015 в 13:15
  • 2
    Теперь изменилось, чтобы добавить сумму – 7171u 24 June 2015 в 13:18

Использование 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
1
ответ дан 23 May 2018 в 19:32

Использование Perl:

perl -pe "s/^(LookupFile:)(.*)/\$1.($b+\$2)/e" file.txt
0
ответ дан 23 May 2018 в 19:32

Другие вопросы по тегам:

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