【问题标题】:add quotes to words matching regex in file awk or sed在文件 awk 或 sed 中为匹配正则表达式的单词添加引号
【发布时间】:2013-08-26 03:03:57
【问题描述】:

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

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

【问题讨论】:

  • matching particular regex -- 告诉我们你的正则表达式。

标签: regex sed awk quotes vi


【解决方案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

【讨论】:

    【解决方案2】:
    sed -i s/71.185.24.60/"'71.185.24.60'"/g filename
    

    其他模式也是如此。

    【讨论】:

      猜你喜欢
      • 2021-08-22
      • 1970-01-01
      • 1970-01-01
      • 2018-04-08
      • 2021-01-27
      • 2020-10-18
      • 2021-01-01
      • 2012-09-26
      相关资源
      最近更新 更多