bash - 如果匹配行,SED 搜索并替换超过 1 个模式
问题描述
如何搜索和替换文件中匹配部分的多个模式?我试过这个
sed '/pattern1,pattern2/s/string1/replace1/g;s/string2/replace2/g' file
但它会忽略 pattern1、pattern2 部分,并为我的第二次搜索和替换搜索和替换整个文件。
解决方案
sed 用于对单个字符串执行 s/old/new,仅此而已。假设根据周围的描述,/pattern1,pattern2/
您实际上是指/pattern1/,/pattern2/
在任何 UNIX 机器上的任何 shell 中的任何 awk:
awk '
/pattern1/ { f=1 }
f {
gsub(/string1/,"replace1")
gsub(/string2/,"replace2")
}
/pattern2/ { f=0 }
1' file
推荐阅读
- javascript - 如何将光标放在 IE 文本输入元素中的文本末尾
- google-apps-script - 需要有关 GoogleScript 上的 Onedit 功能的帮助(电子表格)
- android-layout - 如何从图像视图中心水平图像视图
- awk - awk 数组以意外的顺序打印元素
- python - 如何在 Pandas 中按列而不是按行对值进行排序?
- python - 如何在 Pyspark 中应用 groupby 和 transpose?
- linux - 在 docker 环境中的 Centos 上出现“无法设置语言环境,默认为 C”的错误(yum 安装)
- android - 区分第一次启动活动时调用的 OnResume 与按下后退按钮时调用
- angularjs - $cookies.get 显示未定义
- python - 如何只传递 Pandas 中有 x 个连续非空值的值?