从文件中提取字符串并使用Bash中的脚本分配给变量

时间:2015-03-16 16:19:44

标签: bash

目前我需要从文件中的一行中提取一个数字,在该数字上添加+1,使用Bash将其写入同一文件中的上一个数字。所以我的行看起来像这样:

<Server port="8080" ... > 

我希望将其设为<Server port="8081" ... >

我知道使用sed - 命令我可以找到&#34; 8080&#34;并用一些东西替换它,我只是不知道如何实际获得8080并将其变成8081。 我怎么能这样做?

提前致谢。

1 个答案:

答案 0 :(得分:0)

如果您需要添加,awk是比sed更好的工具。

考虑文件:

$ cat file
<Server port="8080" ... >

我们可以像这样增加端口号:

$ awk -F\" '/<Server/{$2++} 1' file
<Server port= 8081  ... >

这是为了处理您提供的示例输入而设计的。

如何运作

  • -F\"

    将字段分隔符设置为"。将此作为字段分隔符,端口号是其自己的字段。

  • /<Server/

    仅选择包含单词Server

  • 的行
  • {$2++}

    对于那些选定的行,将第二个字段递增一个。

  • 1

    这是awk用于“打印所有行”的神秘缩写。