如何使用awk在列周围添加单引号

Dea*_*ano 1 bash awk sed

只是想知道如何在字段周围添加单引号,因此我可以将其导入mysql而不会出现警告或错误.

我有一个包含大量内容的csv文件.

16:47:11,3,r-4-VM,250000000.,0.50822578824,131072,0,0,0,0,0
Run Code Online (Sandbox Code Playgroud)

期望的输出

'16:47:07','3','r-4-VM','230000000.','0.466028518635','131072','0','0','0','60','0'
Run Code Online (Sandbox Code Playgroud)

我真的不知道从哪里开始,非常感谢你的帮助.

Alp*_*per 12

你可以试试这个

awk -F"," -v quote="'" -v OFS="','" '$1=$1 {print quote $0 quote}' file
Run Code Online (Sandbox Code Playgroud)
  1. 用(','quote-comma-quote) - >替换每个分隔符(,逗号) (-F"," -v OFS="','")
  2. 在行的开头和结尾添加引号 - > (print quote $0 quote)

  • '$ 1 = $ 1`成语使我感到困惑,但Google为我找到了解释.通过分配甚至一个字段,您可以强制AWK重建整行,从而将原始字段分隔符更改为新字段.http://backreference.org/2010/02/10/idiomatic-awk/ (2认同)

ste*_*eha 1

#!/usr/bin/awk -f

BEGIN { FS=OFS=","}

{
    for (i = 1; i <= NF; ++i)
        $i = "'" $i "'"
    print
}
Run Code Online (Sandbox Code Playgroud)

首先,将FS(字段分隔符)设置为逗号;还将OFS输出字段分隔符设置为逗号。

对于每个输入行,循环遍历所有字段。 NF是从当前行解析出的字段数。将每个字段设置为其自己的值,并用单引号引起来。

完成字段更新后,打印修改后的行。