在文件awk或sed中为与regex匹配的单词添加引号

时间:2013-08-23 06:40:28

标签: regex sed awk quotes vi

我想使用任何工具在文件匹配特定正则表达式中添加引号,可能是vi,awk或sed。文件包含许多这样的行。

以此行为例::

'SellerName',2013-08-20 17:19:49,71.185.24.60,-8523106007192903367,5526150741,1,null,25d20a500342-653AC57AF9E6401B,16,2574455867,product description,-8574103407192903368,353860,_,null,-1

我想在IP(71.185.24.60)和会话ID(25d20a500342-653AC57AF9E6401B)周围添加单引号。

我查看了awk,sed和vi,但无法找到如何在替换中插入匹配模式。

如果你有办法,请告诉我。

2 个答案:

答案 0 :(得分:2)

使用awk非常简单:

awk '{ $3 = q $3 q; $8 = q $8 q } 1' FS=, OFS=, q=\' infile

这告诉awk输入和输出是逗号分隔的(FS=, OFS=,)并假设所有字段都不包含嵌入的逗号。字段3和8通过q变量接收引号。

输出:

'SellerName',2013-08-20 17:19:49,'71.185.24.60',-8523106007192903367,5526150741,1,null,'25d20a500342-653AC57AF9E6401B',16,2574455867,product description,-8574103407192903368,353860,_,null,-1

答案 1 :(得分:1)

sed -i s/71.185.24.60/"'71.185.24.60'"/g filename

与其他模式类似。