我有一个文件,其中包含表中的记录。
它具有此格式。每列由制表符分隔
UUID number name
ac500f63-630d-4048-90cf-74bc85c1101c 1 Kane
47493ed9-008b-4dd6-88dc-d91fa64225b3 3 NULL
我想做的是:列需要逗号分隔。 并且 UUID 和名称列需要用单引号括起来,当名称为 NULL 时不要括在单引号中。即使是一行也需要逗号分隔。
上述示例输出为
'ac500f63-630d-4048-90cf-74bc85c1101c', 1, 'Kane'
'47493ed9-008b-4dd6-88dc-d91fa64225b3', 3 NULL
我将需要这些值进行插入查询。有没有办法用sed
或awk
命令来实现这一点?
cat l.txt
UUID number name
ac500f63-630d-4048-90cf-74bc85c1101c 1 Kane
47493ed9-008b-4dd6-88dc-d91fa64225b3 3 NULL
cat p.sh
#!/bin/bash
awk '
NF == 3 && NR >= 2 { m=$3=="NULL"?32:39;printf("%c%s%c,%s, %c%s%cn",39,$1,39,$2,m,$3,m);}
' $1
./p.sh l.txt
'ac500f63-630d-4048-90cf-74bc85c1101c',1,'Kane'
'47493ed9-008b-4dd6-88dc-d91fa64225b3',3, NULL
我希望这对你有好处。