Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 用字符串替换文本文件中的字符串_Linux_Shell_Awk_Sed_Gsub - Fatal编程技术网

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