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

时间:2015-07-24 08:19:44

标签: 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创建一个CSV文件,其中时间戳首先在csv文件中,devicename是第二个,所有其他数据字段在第三列?

我在网上四处寻找并且大多数人建议只需将第一个或两个字段设置为“”,然后立即打印出所有内容(以获得字段范围),但在那种情况下这不起作用,因为我仍然想在csv文件中使用timestamp和devicename。

2 个答案:

答案 0 :(得分:3)

使用awk

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

只需将,添加到1st2nd字段。

答案 1 :(得分:1)

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

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