Linux 如何使用awk创建包含字段范围的csv文件

Linux 如何使用awk创建包含字段范围的csv文件,linux,bash,logging,awk,Linux,Bash,Logging,Awk,我正在尝试使用awk处理日志文件。日志文件行类似于以下内容: timestamp devicename data data data timestamp devicename data data timestamp devicename data data data ..... 我想创建一个类似以下内容的csv文件 timestamp,devicename,all other data 如果设备名称后面的数据始终包含相同数量的分隔值,那么这将非常容易,但不幸的是,它没有包含相同数量的分隔值。

我正在尝试使用awk处理日志文件。日志文件行类似于以下内容:

timestamp devicename data data data
timestamp devicename data data
timestamp devicename data data data
.....
我想创建一个类似以下内容的csv文件

timestamp,devicename,all other data
如果设备名称后面的数据始终包含相同数量的分隔值,那么这将非常容易,但不幸的是,它没有包含相同数量的分隔值。我应该如何使用awk来创建一个CSV文件,其中时间戳位于CSV文件的第一列,devicename位于第二列,所有其他数据字段位于第三列


我在网上四处查看,大多数人建议只需将前一两个字段设置为“”,然后立即打印所有内容(以获得字段范围),但在这种情况下,这不起作用,因为我仍然希望在csv文件中使用时间戳和设备名

只需将第一个和第二个空格替换为逗号即可

sed 's/^\([^[:blank:]]\+\)[[:blank:]]\+\([^[:blank:]]\+\)[[:blank:]]\+/\1,\2,/' file

只需用逗号替换第一个和第二个空格

sed 's/^\([^[:blank:]]\+\)[[:blank:]]\+\([^[:blank:]]\+\)[[:blank:]]\+/\1,\2,/' file
使用
awk

awk '{$1=$1",";$2=$2","}1' File
timestamp, devicename, data data data
timestamp, devicename, data data
timestamp, devicename, data data data
只需将
添加到
1st
2nd
字段。

使用
awk

awk '{$1=$1",";$2=$2","}1' File
timestamp, devicename, data data data
timestamp, devicename, data data
timestamp, devicename, data data data

只需将
添加到
1st
2nd
字段中。

sed的/,/;s/,/'
应该可以工作。
sed的s/,/;s/,/“
应该可以工作。