我有以下文字文件:
dsfgsdgf dsfsdg
Version: 29.15-005
dfs sdfg sdf g
dsfsdfgsdfgsfdg
所以它包含一堆数据,并且有一个唯一的
行Version:
第一次调用脚本时,29.15-005将替换为29.15-006。下一次29.15-006将被替换为29.15-007等等
我不需要检查当它到达-999时会发生什么,因为值永远不会那么高。
使用F和OFS查看各种awk脚本,但似乎无法解决如何应用上述问题。
任何指针都会受到赞赏。
每次使用其他数据(以及不同的长度)调用时,文本文件都会有所不同,但Version:中的信息将保持不变。
答案 0 :(得分:1)
尝试
AbsListView.LayoutParams
<强>输出强>
awk -F- -v OFS=- '
/^Version:/{
incr=sprintf("%03d", ($2 + 1))
$2=incr
}1' file > tmpFile && /bin/mv tmpFile file
dsfgsdgf dsfsdg
Version: 29.15-006
dfs sdfg sdf g
dsfsdfgsdfgsfdg
确保脚本仅处理感兴趣的行。
关闭/^Version:/
字符后的1
确保打印文件的所有行。
IHTH
答案 1 :(得分:1)
这听起来像你想要的(使用GNU awk进行就地编辑):
$ cat file
dsfgsdgf dsfsdg
Version: 29.15-005
dfs sdfg sdf g
dsfsdfgsdfgsfdg
$ awk -i inplace 'BEGIN{FS=OFS="-"} /Version:/{$2=sprintf("%03d",($2+1))} 1' file
$ cat file
dsfgsdgf dsfsdg
Version: 29.15-006
dfs sdfg sdf g
dsfsdfgsdfgsfdg
使用其他证据awk 'script' file > tmp && mv tmp file
。