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
Shell 搜索并替换两行中的字符串_Shell_Sed_Grep - Fatal编程技术网

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