这是数据库查询的输出:
1 KALI,REGISTERED
2 KALI,PROCESSING
3 KALI,RECEIVED
1 KALI,SUBMITTED
7 KALI,SUCCEEDED
4 WEKA,PROCESSING
输出每次都会更改,并且行数可能与上次运行查询时不同,但格式始终如下:number space word,word
. 我需要他们是这样的:number,word,word
。我试图用查询本身来处理这个问题,但数据库不支持这个,所以我决定用 Linux 来处理这个问题。我用这个命令用逗号替换空格:sed -e 's/\s\+/,/g' command.output
.我把这个输出:
,1,KALI,REGISTERED,
,2,KALI,PROCESSING,
,3,KALI,RECEIVED,
,1,KALI,SUBMITTED,
,7,KALI,SUCCEEDED,
,4,WEKA,PROCESSING,
但我期待这样的事情,所以我可以将它存储在一个数组中:
1,KALI,REGISTERED
2,KALI,PROCESSING
3,KALI,RECEIVED
1,KALI,SUBMITTED
7,KALI,SUCCEEDED
4,WEKA,PROCESSING
尝试了更多命令,它们都没有工作。我怎样才能得到这个输出?
理想情况下,您应该更改数据库查询以以您需要的格式输出数据。
这用于
awk
将空格或制表符分隔的数据重新格式化为逗号分隔。通过将OFS
输出字段分隔符设置为逗号,然后修改每个输入记录中的字段值,awk
将使用新的输出分隔符重新创建记录。打印它会给出想要的输出。awk
默认情况下,在读取每行时也会忽略每行上的任何前导或尾随空格。如果要使用 执行此操作
sed
,则首先删除所有初始空格,然后将第一个剩余空格更改为逗号:该
[[:blank:]]
模式匹配空格或制表符(就像\s
在 Perl 的正则表达式中一样)。我出于习惯使用它,但您可能希望使用单个文字空间,除非您实际上正在处理制表符(这在问题中不清楚)。您还可以将这两个sed
表达式写在同一个参数中: