你好 StackOverflow 社区!
我正在编写一个 bash 脚本来更改 Dynamic 文本文件,我想用一行替换多行。
例如:
这个例子,我要替换THIS
CCCCC
DDDDD
使用KKKKK
脚本之前
AAAAA
CCCCC
DDDDD
BBBBB
CCCCC
DDDDD
CCCCC
脚本之后
AAAAA
KKKKK
BBBBB
KKKKK
CCCCC
我找到了一个脚本来替换 using ( sed
) 但它不会替换多行。
注意:我是脚本初学者,所以请解释如何轻松完成:)
最佳答案
你正在寻找的 sed 表达式是这样的:
sed -e '/CCCCC/{N;s/CCCCC\nDDDDD/KKKKK/}'
这是做什么的?
只要与正则表达式 CCCCC
匹配,它就会命令 sed
执行由大括号分隔的命令 block (您可能更愿意将其替换为 ^CCCCC $
)
每当执行上述 block 时,它所做的第一件事就是将下一行添加到模式空间。然后它只执行替换命令。
另见 the answers to this question in the UNIX & Linux StackExchange community .
请注意 more N;
命令向模式空间添加更多行。
例如:
sed -e '/CCCCC/{N; N; s/CCCCC\nDDDDD\nBBBBB/KKKKK/}'
关于linux - 搜索和替换(多行),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52018388/