【发布时间】:2015-05-02 13:02:09
【问题描述】:
任何将子字符串(在本例中为 ;[^;]*)插入到正则表达式模式中的想法,该模式在特定位置分隔 ;(在我的情况下添加第 4 个字段,其中总是有 4 个字段)。
问题是“字段”中的值是正则表达式,而字符 ; 可以作为模式存在(如在类中或转义字符中)而不是分隔符。
它在 AIX 上,因此没有可用的 GNU 工具(posix sed 或 awk)。
可能的字符串示例和预期结果
lazy;dog;are;running
-> lazy;dog;are;[^;]*;running
[^;]*;dog;are;[^;]*
-> [^;]*;dog;are;[^;]*;[^;]*
[^,;:0-9]*;dog;are;\;running
-> [^,;:0-9]*;dog;are;[^;]*;\;running
我尝试基于第一个字符串的sed 's/;[^;]*$/[^;]*;&/',但由于缺少反向引用值,无法针对其他特殊情况在 sed 上构建修改
(我认为 perl 或者 awk 可以避免大量批处理/sed
【问题讨论】:
-
所以您不想计算
[]中存在的分号? -
对,也不是
;in\;出于同样的原因