Linux 用字符串替换文本文件中的字符串
我正在尝试形成以下格式的长索引文件:Linux 用字符串替换文本文件中的字符串,linux,shell,awk,sed,gsub,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] ------- 我有以下格式的文件: [1] 13 14 15
[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]
-------
我有以下格式的文件:
[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]
-------
如果longindex包含您的输入文件,如何使用脚本将括号中的“index-i”替换为其“引用”
$ 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]
这可能适合您(GNU-sed&bash):
如果当前行以开放的方括号开始,则按如下方式处理该行
用保留空间的内容替换当前行
递增计数器
更新保留空间
用方括号括起来。欢迎使用SO,请在代码标签中编辑您的示例,因为目前还不清楚。另外,请在您的问题中添加您的努力,然后让我们知道。那么,前一个数据集是预期输出,后一个是示例数据?你一定试过什么了?@Pragati:你试过什么了吗?你能澄清一下你所说的“出现”是什么意思吗1'。在与
++number
连接时,应始终添加参数,以确保连接awk的哪一侧应用++
,否则它可以将“[++i
读取为(“[+”)i
,而不是您想要的,“[”(+++i
。