有谁知道如何使用sed编辑器在文本文件中用line a替换line b,用line b替换line a

我可以看到如何用保持空间中的一行(即/^Paco/x/^Paco/g)替换模式空间中的一行,但是如果我想以Paco开头的行并将其替换为以Vinh开头的行怎么办? ,还采用以Vinh开头的行并将其替换为以Paco开头的行吗?

对于初学者,我们假设Paco一行,Vinh一行,并且Paco行出现在Vinh行之前。然后我们可以转到一般情况。

最佳答案

#!/bin/sed -f
/^Paco/ {
:notdone
  N
  s/^\(Paco[^\n]*\)\(\n\([^\n]*\n\)*\)\(Vinh[^\n]*\)$/\4\2\1/
  t
  bnotdone
}

匹配/^ Paco/之后,我们读入模式缓冲区,直到s//成功(或EOF:模式缓冲区将不变地打印)。然后我们开始搜索/^ Paco/。

关于linux - 如何使用sed交换两行?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3992066/

10-13 06:18