linux - 搜索和替换(多行)

标签 linux bash shell unix replace

你好 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/

相关文章:

linux - 将输出存储在变量中并在命令中使用变量

python - 隐藏 os.system 产生的控制台输出

linux - 仅在找到文件时创建 ZIP - 使用 shell 脚本

linux - 在 Linux 中,如何将脚本中的 wall 输出重定向到文件?

ubuntu 10.10 中的 Php Cron 作业不会为 lampp 执行 - 需要帮助

linux - 使用 "uniq"bash 跳过前 n 个字符打印唯一输出

bash - Unix 验证文件没有内容和空行

javascript - 将简单的温度 bash 脚本转换为 javascript

php - Plesk - 添加 Pear

linux - 在 while 读取循环 bash 中从第 4 行获取变量