我正在尝试使用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。
答案 0 :(得分:3)
使用awk
:
awk '{$1=$1",";$2=$2","}1' File
timestamp, devicename, data data data
timestamp, devicename, data data
timestamp, devicename, data data data
只需将,
添加到1st
和2nd
字段。
答案 1 :(得分:1)
只需用逗号替换第一个和第二个空格。
sed 's/^\([^[:blank:]]\+\)[[:blank:]]\+\([^[:blank:]]\+\)[[:blank:]]\+/\1,\2,/' file