regex - 用 SED 将数字用双引号括起来

标签 regex bash unix sed

我有一个简单的需求,我输入了likeL

4,23139,,"XYZ" 

在一个文本文件中,我需要这样的输出

"4","23139","","ARCMsgEnum".

我写的命令在某些情况下工作正常:

sed 's/[0-9]*[0-9]/"&"/g' inputTestData.txt | sed s/,,/,\"\",/g 

但有些行的输入是时间戳:

4,23139,,"XYZ","2008-09-04 08:11:33.51 AM"

所以期望的输出是:

"4","23139","","XYZ","2008-09-04 08:11:33.51 AM"

但是上面的命令给我的输出是这样的:

"4","23139","","XYZ",""2008"-"09"-"04" "08":"11":"33"."46" AM"

最佳答案

以下内容可能对您有用:

sed -e 's/"//g' -e 's/[^,]*/"&"/g' inputfile

这将首先去除引号,然后在逗号内的部分内插入引号。

举个例子:

$ echo 4,23139,,\"XYZ\",\"2008-09-04 08:11:33.51 AM\" | sed -e 's/"//g' -e 's/[^,]*/"&"/g'
"4","23139","","XYZ","2008-09-04 08:11:33.51 AM"

关于regex - 用 SED 将数字用双引号括起来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19160206/

相关文章:

regex - VBScript 正则表达式 - 条件匹配

javascript - 将 PDF 页面解析为 javascript 图像

bash - 如何在 docker 容器中安装/启动 docker 引擎服务

正则表达式替换上下文中的字符串,但不替换上下文

bash - '>&0' 是否有用途(重定向到标准输入)?

shell - Unix命令错误

java - 如何替换两个数字之间的每个空格?

javascript - 正则表达式替换逗号

javascript - 隐藏元素如果另一个元素包含字母,则显示否则

c - systemcalls.h 找不到这样的文件或目录