如何使用 bash 脚本操作文件中的行?



我有一个文件,其中包含表中的记录。

它具有此格式。每列由制表符分隔

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

我将需要这些值进行插入查询。有没有办法用sedawk命令来实现这一点?

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 

我希望这对你有好处。

最新更新