有谁知道如何使用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/