macos - 需要帮助在 macOS 上使用 sed 在两次连续匹配后插入文本
问题描述
如何使用 sed 在文件中的两个连续匹配后插入文本。这可能吗?如果是,我该如何执行以下操作?
我的文件:
abcdef()K
.xyz 1
('I want to add text here')
请注意,.xyz 将是相同的,但它可以是 1 或 2 或 3 或任何其他数字。但是 .xyz 肯定会在 abcdef()K 之下。我想在 .xyz 部分之后添加文本。
请帮助大家。谢谢。
解决方案
这可能对您有用(GNU sed):
sed -e '/abcdef()K/!b' -e ':a;n;/\.xyz/!ba' -e 'a new text added' file
如果一行不包含abcdef()K
保释。
打印当前行并获取下一行。
如果当前行不包含.xyz
,请重复上述操作。
否则,追加new text added
到当前行。
sed -e '/abcdef()K/!b' -e ':a' -e 'n' -e '/\.xyz/!ba' -e 'a new text added' file
或者:
cat <<\! | sed -f - file
/abcdef()K/!b
:a
n
/\.xyz/!ba
a new text added
!
推荐阅读
- c# - AmazonSQSClient 删除所有队列
- java - Java 8如何迭代嵌套的对象列表
- python - Python - PyQt:QThread 的内存问题
- django - Django OAuth 工具包令牌生成
- autohotkey - 使用 AutoHotKeys 快速添加日期戳和字符串
- c# - ComboBox 或 ListBox 作为 Form 的索引 - 将其他控件绑定到 SelectedItem
- java - 仅当前一个对象完成时,如何从 Firebase 获取对象?
- google-cloud-platform - 在网络接口中创建 ip external valid
- python-3.x - 卡尔曼滤波器从未来预测前一步
- url-parameters - 用于附加文件的 OWA URL 参数