使用 AWK 增加数字
Increment Number with AWK
我有一系列具有以下模式的代码块:
<div class="label label-primary">#1</div>
<!--A1_START-->
[code block]
<!--A1_END-->
块编号为 1-44。但是,块 #6 已被删除,因此我需要块 7-44 中的数值递减。
如何使用 awk 修改适当的块? SO 上有许多类似的问题,但我似乎无法修改其中任何一个以产生所需的结果。
您可以使用 "strange" 字段分隔符,这样数字就可以单独放置并随时可以更改:
awk -v FS='<div class="label label-primary">#|</div>' '>7{sub(, -1)}1' a
说明
-v FS='<div class="label label-primary">#|</div>
将字段分隔符设置为 <div class="label label-primary">#
或 </div>
。这样,数字将是字段 2 (</code>).</li>
<li><code>>7{sub(, -1)}
如果 </code> 大于 <code>7
,则将其替换为自身减 1。
1
因为它被评估为 True,它执行默认的 awk
操作:打印当前记录(行)。
测试
$ cat a
<div class="label label-primary">#1</div>
<!--A1_START-->
[code block]
<!--A1_END-->
<div class="label label-primary">#2</div>
<!--A1_START-->
[code block]
<!--A1_END-->
<div class="label label-primary">#10</div>
<!--A1_START-->
[code block]
<!--A1_END-->
让我们运行它:
$ awk -v FS='<div class="label label-primary">#|</div>' '>7{sub(, -1)}1' a
<div class="label label-primary">#1</div>
<!--A1_START-->
[code block]
<!--A1_END-->
<div class="label label-primary">#2</div>
<!--A1_START-->
[code block]
<!--A1_END-->
<div class="label label-primary">#9</div> # <--- 10 is now 9
<!--A1_START-->
[code block]
<!--A1_END-->
我有一系列具有以下模式的代码块:
<div class="label label-primary">#1</div>
<!--A1_START-->
[code block]
<!--A1_END-->
块编号为 1-44。但是,块 #6 已被删除,因此我需要块 7-44 中的数值递减。
如何使用 awk 修改适当的块? SO 上有许多类似的问题,但我似乎无法修改其中任何一个以产生所需的结果。
您可以使用 "strange" 字段分隔符,这样数字就可以单独放置并随时可以更改:
awk -v FS='<div class="label label-primary">#|</div>' '>7{sub(, -1)}1' a
说明
-v FS='<div class="label label-primary">#|</div>
将字段分隔符设置为<div class="label label-primary">#
或</div>
。这样,数字将是字段 2 (</code>).</li> <li><code>>7{sub(, -1)}
如果</code> 大于 <code>7
,则将其替换为自身减 1。1
因为它被评估为 True,它执行默认的awk
操作:打印当前记录(行)。
测试
$ cat a
<div class="label label-primary">#1</div>
<!--A1_START-->
[code block]
<!--A1_END-->
<div class="label label-primary">#2</div>
<!--A1_START-->
[code block]
<!--A1_END-->
<div class="label label-primary">#10</div>
<!--A1_START-->
[code block]
<!--A1_END-->
让我们运行它:
$ awk -v FS='<div class="label label-primary">#|</div>' '>7{sub(, -1)}1' a
<div class="label label-primary">#1</div>
<!--A1_START-->
[code block]
<!--A1_END-->
<div class="label label-primary">#2</div>
<!--A1_START-->
[code block]
<!--A1_END-->
<div class="label label-primary">#9</div> # <--- 10 is now 9
<!--A1_START-->
[code block]
<!--A1_END-->