Hello StackOverflow社区!
我正在使用 bash 脚本来更改 Dynamic 文本文件,我想用一行替换多行。
例如:
此示例,我要替换此
CCCCC
DDDDD
使用KKKKK
脚本之前
AAAAA
CCCCC
DDDDD
BBBBB
CCCCC
DDDDD
CCCCC
脚本后
AAAAA
KKKKK
BBBBB
KKKKK
CCCCC
我找到了一个用(sed
替换的脚本,但是它不能替换多行。
注意:我是脚本编写的初学者,所以请解释一下如何轻松完成:)
答案 0 :(得分:0)
您要查找的sed表达式如下:
sed -e '/CCCCC/{N;s/CCCCC\nDDDDD/KKKKK/}'
这是做什么的?
只要与正则表达式sed
匹配,它就会命令CCCCC
执行大括号分隔的命令块(您可能更喜欢用^CCCCC$
代替)
无论何时执行上述块,它要做的第一件事就是将下一行添加到模式空间。然后它只执行替换命令。
另请参阅the answers to this question in the UNIX & Linux StackExchange community。
请注意,更多N;
命令可在图案空间中添加更多行。
例如:
sed -e '/CCCCC/{N; N; s/CCCCC\nDDDDD\nBBBBB/KKKKK/}'
答案 1 :(得分:0)
您可以这样做
tr '\n' ' ' < yourText.txt | sed "s/CCCCC DDDDD/KKKKK/g" | tr -s ' ' '\n'
要保存它,只需在上述命令的末尾添加> another.txt