Linux 如何使用awk创建包含字段范围的csv文件
我正在尝试使用awk处理日志文件。日志文件行类似于以下内容: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 如果设备名称后面的数据始终包含相同数量的分隔值,那么这将非常容易,但不幸的是,它没有包含相同数量的分隔值。
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/,/“
应该可以工作。