0

我想使用任何工具(可能是 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,但找不到如何在替换中插入匹配模式。

让我知道你是否有办法做到这一点。

4

2 回答 2

2

使用 awk 非常简单:

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

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

输出:

'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
于 2013-08-23T08:18:12.533 回答
1
sed -i s/71.185.24.60/"'71.185.24.60'"/g filename

对于其他模式也是如此。

于 2013-08-23T11:35:29.213 回答