用字符串的出现替换文本文件中的字符串

时间:2020-08-13 09:32:32

标签: linux shell awk sed gsub

我正在尝试形成以下格式的长索引文件:

[1]
13 14 15 16 17 18
[2]
89 90 91 92 93 94
[3]
165 166 167 168 169 170
[4]
---------------------

我的文件格式为:

[index-i]
13 14 15 16 17 18
[index-i]
89 90 91 92 93 94
[index-i]
165 166 167 168 169 170
[index-i]
-------

如何使用脚本将方括号中的“ index-i”替换为“出现次数”

2 个答案:

答案 0 :(得分:1)

如果longindex包含您的输入文件

$ cat longindex 
[index-i]
13 14 15 16 17 18
[index-i]
89 90 91 92 93 94
[index-i]
165 166 167 168 169 170
[index-i]

然后使用awk(或gawk)

$ gawk '/^\[/{print "[" ++i "]"; next;} {print}' longindex 
[1]
13 14 15 16 17 18
[2]
89 90 91 92 93 94
[3]
165 166 167 168 169 170
[4]

答案 1 :(得分:1)

这可能对您有用(GNU sed和bash):

sed '/^\[/{g;s/.*/expr & + 1/e;h;s/.*/[&]/}' file

如果当前行以方括号开头,则按如下方式处理该行。

用保留空间的内容替换当前行。

增加计数器。

更新保留空间。

用方括号括起来。

相关问题