gpt4 book ai didi

linux - 如何使用 sed 进行多行替换?

转载 作者:IT王子 更新时间:2023-10-29 01:25:30 27 4
gpt4 key购买 nike

我有一个名为“a6s”的文本文件,其中包含多行,如下所示:

y
n
yyy
n
y
yyy
yy
y
yyy
n

我使用了这个脚本:

$ sed -i "s/y$^y/ya\ny/g" a6s;

我想在最后一行结尾和下一行开头的两个“y”字符之间插入输出:

y
n
yyy
n
ya
yyya
yya
ya
yyy
n

最佳答案

使用 GNU sed (这个伟大的解决方案完全归功于@Sundeep,谢谢):

sed -i '/y$/ {N; s/y\ny/ya\ny/; P; D}' a6s

为了使用 sed 在多行上工作,您必须使用 NPD命令:

  • {cmds}:命令组
  • /y$/{cmds}:仅当行以 y
  • 结尾时才执行命令组
  • N:读取下一行到模式空间
  • s/regex/replacement/:进行替换,不需要g标志
  • P:打印模式空间到第一个 \n 字符(第一行)
  • D:删除模式空间到第一个 \n 字符

我原来的解决方案使用了不必要的标签:

sed -i ':a; N; s/y\ny/ya\ny/; {P; D}; ba' a6s

我建议您看看这个很棒的 grymoire.com使用多行的教程。

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

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com