Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/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
如何将一个字符串替换为第3(n)行中的另一个字符串,并且每n+;6(如9、15、24等)在Linux中使用sed、awk或任何其他程序?_Linux_Awk_Sed - Fatal编程技术网

如何将一个字符串替换为第3(n)行中的另一个字符串,并且每n+;6(如9、15、24等)在Linux中使用sed、awk或任何其他程序?

如何将一个字符串替换为第3(n)行中的另一个字符串,并且每n+;6(如9、15、24等)在Linux中使用sed、awk或任何其他程序?,linux,awk,sed,Linux,Awk,Sed,我在一个包含大约6K行的.txt文件中收集了一个非常大的数据,我想首先修改第3行,现在称为n,以及每一个n+6第几行,比如9、15、24等等 这是当前状态的一个示例: domain_name = {'name': 'aaa.pro' 'register': 159.00 'register': 159.00 'register': 159.00 'currency': USD domain_name = {'name': 'abogado' 'register': 40.50 'registe

我在一个包含大约6K行的
.txt
文件中收集了一个非常大的数据,我想首先修改第3行,现在称为
n
,以及每一个
n+6
第几行,比如9、15、24等等

这是当前状态的一个示例:

domain_name = {'name': 'aaa.pro'
'register': 159.00
'register': 159.00
'register': 159.00
'currency': USD

domain_name = {'name': 'abogado'
'register': 40.50
'register': 40.50
'register': 40.50
'currency': USD

domain_name = {'name': 'academy'
'register': 34.50
'register': 34.50
'register': 34.50
'currency': USD
我希望结果是这样的:

domain_name = {'name': 'aaa.pro'
'register': 159.00
'renew': 159.00
'register': 159.00
'currency': USD

domain_name = {'name': 'abogado'
'register': 40.50
'renew': 40.50
'register': 40.50
'currency': USD

domain_name = {'name': 'academy'
'register': 34.50
'renew': 34.50
'register': 34.50
'currency': USD
因此,
n
的行号3,以及包含
寄存器
字符串的行号9、15等(n+6)应替换为
续订
字符串

我已经阅读了
sed
awk
手册,但我不知道如何准确地达到这一点


你能帮帮我吗?

你能试试下面的吗

awk -v n="3" 'FNR==n{sub(/register/,"renew");n+=6} 1' Input_file

说明:提及
-v n=“3”
以创建名为
n
的变量,其值为
3
。然后检查条件
FNR==n
以查看当前行号是否与
n
相同,然后进入块
{…}
,并使用
sub
替换寄存器,然后将6添加到n的当前值并将其保存到
n
本身<代码>1将打印当前行。

请尝试以下操作

awk -v n="3" 'FNR==n{sub(/register/,"renew");n+=6} 1' Input_file
说明:提及
-v n=“3”
以创建名为
n
的变量,其值为
3
。然后检查条件
FNR==n
以查看当前行号是否与
n
相同,然后进入块
{…}
,并使用
sub
替换寄存器,然后将6添加到n的当前值并将其保存到
n
本身<代码>1将打印当前行。

这可能适用于您(GNU-sed):

从第3行开始,此后每隔6行,用
续订
替换
注册
,并在适当位置编辑文件。

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

从第3行开始,此后每隔6行,用
更新
替换
注册
,并在适当位置编辑文件