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

У меня есть это в file.txt

ФОРМА: lookupfile
Версия: 1
$i LookupFile:""

Как я могу найти это в файле и добавить переменную b к $i.

Так пример

ВХОД

ФОРМА: lookupfile
Версия: 1
LookupFile:4

Предположим мой b=300

ВЫВОД

ФОРМА: lookupfile
Версия: 1
LookupFile:304

0
задан 24 June 2015 в 12:48

4 ответа

awk -v b=$b 'BEGIN {FS=OFS=":"} /LookupFile/ {print $1,$2+300;next} {print}' file.txt

Вот другой, с sed:

num=$(sed -n '/LookupFile:.*/p' file.txt | cut -d':' -f2); substitute=$(expr 300 + $num ); sed "s/LookupFile:.*/LookupFile:$substitute/g" file.txt

, Если Вы хотите заставить sed сделать изменения в файле, используйте эти -i флаг с последней sed командой

1
ответ дан 4 October 2019 в 02:22

Используя Perl:

perl -pe "s/^(LookupFile:)(.*)/\$1.($b+\$2)/e" file.txt
0
ответ дан 4 October 2019 в 02:22
awk  -v b=$b -F: '{ if ( $1 == "LookupFile" ) $0=$1":"($2+b); print $0 }' file.txt

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

3
ответ дан 4 October 2019 в 02:22

Используя 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
ответ дан 4 October 2019 в 02:22

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

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