我正在尝试编写一个脚本,该脚本会增加配置文件中的整数。我正在尝试使用grep
来查找当前值:
$ grep versionNumber myfile.conf
versionNumber 123789
^ whitespace
^ the key I need to match
^ the value I need to capture
我想要的结果是捕获上面示例中的123789
。
为了捕获这个值我需要做什么?
答案 0 :(得分:2)
你可以这样做:
grep versionNumber myfile.conf | grep -oE '[0-9]+'
或者
grep versionNumber myfile.conf | awk '{print $2}'
或者
grep versionNumber myfile.conf | cut -d' ' -f2
或者如果您拥有支持-P
模式的GNU grep:
grep -oP 'versionNumber \K\d+' myfile.conf
答案 1 :(得分:2)
使用awk
awk '/versionNumber/{print $2}' myfile.conf
答案 2 :(得分:2)
使用grep -oP
(pcre模式);
s=' versionNumber 123789'
grep -oP 'versionNumber\h+\K\S+' <<< "$s"
123789
答案 3 :(得分:0)
脚本,使用Gnu awk v.4.1.0 +增加配置文件中的整数:
测试文件:
$ cat > file
foo
versionNumber 123789
bar
使用就地编辑功能:
$ awk -i inplace '/versionNumber/ {n=index($0,"v"); sub($2,$2+1); printf "%-"n"s\n", $0; next} 1' file
结果:
$ cat file
foo
versionNumber 123790
bar
说明:
在原地编辑文件的关键是-i inplace
/versionNumber/ { # if versionNumber found in record
n=index($0,"v") # count leading space amount to n
sub($2,$2+1) # increment the number in second field
printf "%-"n"s\n", $0 # print n space before the (trimmed) record
next # skip print in the next line
} 1 # print all other records as were