如何将一个字符串替换为第3(n)行中的另一个字符串,并且每n+;6(如9、15、24等)在Linux中使用sed、awk或任何其他程序?
我在一个包含大约6K行的如何将一个字符串替换为第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
.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行,用更新替换注册
,并在适当位置编辑文件