Shell 搜索并替换两行中的字符串
我有你的档案Shell 搜索并替换两行中的字符串,shell,sed,grep,Shell,Sed,Grep,我有你的档案 1111:22223322 0000440000 2222:77778866 0101550101 9999:87870087 7777556666 我需要用第二行的44替换第一行的33。数字不同,但位置相同,后面是5和6:替换为第二行的5和6 是否有人知道一个Unix命令或一系列命令可以对所有行执行此操作。第2行中的数字替换第1行…之后,第4行中的数字替换第3行。。。然后将它们重定向到新文件?保存奇数行,然后在到达相应的偶数行时进行替换,在转到下一奇数行之前打印两行 如果只想打
1111:22223322
0000440000
2222:77778866
0101550101
9999:87870087
7777556666
我需要用第二行的44替换第一行的33。数字不同,但位置相同,后面是5和6:替换为第二行的5和6
是否有人知道一个Unix命令或一系列命令可以对所有行执行此操作。第2行中的数字替换第1行…之后,第4行中的数字替换第3行。。。然后将它们重定向到新文件?保存奇数行,然后在到达相应的偶数行时进行替换,在转到下一奇数行之前打印两行 如果只想打印更改的行,可以删除打印源
你能试试下面的吗
awk '
{
val=index($0,":")
}
val!=0{
line=$0
prev_val=val
next
}
{
print substr(line,1,prev_val) substr(line,prev_val+1,4) substr($0,5,2) substr(line,prev_val+7) ORS $0
}
' Input_file
您能显示整个输入的预期输出吗?非常好,非常感谢much@Leva,如果这对你有帮助的话,请你也检查一下这个好吗?
awk '
{
val=index($0,":")
}
val!=0{
line=$0
prev_val=val
next
}
{
print substr(line,1,prev_val) substr(line,prev_val+1,4) substr($0,5,2) substr(line,prev_val+7) ORS $0
}
' Input_file