bsa*_*ner 1 bash scripting awk
给出一个包含这样内容的文件:
foo: 8.3.1
bar: 803001
Run Code Online (Sandbox Code Playgroud)
我需要一个bash脚本来读取这个文件只增加最后一个数字,并考虑第二行的最后三位数作为xyx中z的空间增长到三位数(并用新数据覆盖原始文件:
输入1:
foo: 8.3.1
bar: 803001
Run Code Online (Sandbox Code Playgroud)
输出1:
foo: 8.3.2
bar: 803002
Run Code Online (Sandbox Code Playgroud)
输入2:
foo: 8.3.9
bar: 803009
Run Code Online (Sandbox Code Playgroud)
输出2:
foo: 8.3.10
bar: 803010
Run Code Online (Sandbox Code Playgroud)
输入3:
foo: 8.3.199
bar: 803199
Run Code Online (Sandbox Code Playgroud)
输出3:
foo: 8.3.200
bar: 803200
Run Code Online (Sandbox Code Playgroud)
我可以在2秒内在java中执行此操作,但我需要在shell脚本中执行此操作,否则我将面临构建团队无休止的嘲弄.
没有一些粗略的字符串拆分任何光滑的sep命令将是一个很大的帮助!
awk 救援!
awk -v d='.' '{n=split($2,v,d);
if (n>1) $2=v[1] d v[2] d v[3]+1;
else $2++}1' file
Run Code Online (Sandbox Code Playgroud)
根据文件中的其他内容,您可能需要在声明之前使用条件限定替换.