【发布时间】:2020-01-14 14:25:41
【问题描述】:
我正在处理一个大型 CSV 文件,我需要在文件中进行一些搜索和替换。
有随机行包含如下文本:

我需要将此文本替换为:
!image.png!
中间的文本,在本例中为image.png,需要完全保留,并不总是image.png。字符串可以单独一行,也可以是不相关文本行的一部分。封装字符 始终相同。 !、[、]、( 和 ) 的其他实例无法更改。有什么建议吗?
【问题讨论】:
-
您需要在 sed 上搜索“捕获组”和/或“反向引用”。这是 sed 的核心功能。这是一个简短教程的示例:riptutorial.com/sed/example/8893/backreference.
-
不要让读者猜测您有问题的数据是什么样的。编辑您以包含应该修改和不应该修改的数据样本。如果您包含其他示例数据以提供上下文,这将有所帮助。祝你好运。
-
为什么不只是
sed 's/!\[\](\([^)]*\))/!\1!/g'? -
谢谢@oguzismail 这正是我所需要的!