Regex 在文件awk或sed中匹配正则表达式的单词中添加引号

Regex 在文件awk或sed中匹配正则表达式的单词中添加引号,regex,sed,awk,quotes,vi,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

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


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

这对于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

这对于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
另一种模式也是如此


另一种模式也是如此。

匹配特定正则表达式
--告诉我们您的正则表达式。
匹配特定正则表达式
--告诉我们您的正则表达式。