提高文本文件

时间:2016-01-07 13:22:26

标签: bash awk

我有以下文字文件:

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:中的信息将保持不变。

2 个答案:

答案 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