用 SED 将数字用双引号引起来

Sau*_*wal 2 regex unix bash sed

我有一个简单的要求,我有输入像L

4,23139,,"XYZ" 
Run Code Online (Sandbox Code Playgroud)

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

"4","23139","","ARCMsgEnum".
Run Code Online (Sandbox Code Playgroud)

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

sed 's/[0-9]*[0-9]/"&"/g' inputTestData.txt | sed s/,,/,\"\",/g 
Run Code Online (Sandbox Code Playgroud)

但有一些行的输入为时间戳:

4,23139,,"XYZ","2008-09-04 08:11:33.51 AM"
Run Code Online (Sandbox Code Playgroud)

所以期望的输出是:

"4","23139","","XYZ","2008-09-04 08:11:33.51 AM"
Run Code Online (Sandbox Code Playgroud)

但上面的命令给我的输出如下:

"4","23139","","XYZ",""2008"-"09"-"04" "08":"11":"33"."46" AM"
Run Code Online (Sandbox Code Playgroud)

dev*_*ull 5

以下内容可能对您有用:

sed -e 's/"//g' -e 's/[^,]*/"&"/g' inputfile
Run Code Online (Sandbox Code Playgroud)

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

举个例子:

$ 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"
Run Code Online (Sandbox Code Playgroud)