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

标签 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 文件中排在第一位,设备名称在其次,所有其他数据字段在第三列?

我在网上四处寻找,大多数人建议简单地将前一两个字段设置为“”,然后一次打印出所有内容(以获得字段范围),但这在那种情况下行不通,因为我仍然想要在 csv 文件中使用时间戳和设备名称。

最佳答案

使用awk:

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

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

关于linux - 如何使用 awk 创建包含字段范围的 csv 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31605519/

相关文章:

linux - 从 plesk 运行 cronjobs

bash - 在 crontab 中连接变量将不起作用

Linux:如何终止 sleep

python - 扩展python日志处理程序,得到 "Level not an integer or a valid string"

android - 了解启用 Proguard 时的崩溃和 ANR

logging - 日志记录是否应该受到国际化的影响?

linux - 保留返回值并且不从子 shell 运行

python - PyGears 不生成输出 HDL 文件

c++ - 从 C++ 程序在 Linux 上获取 SCSI 硬盘驱动器序列

linux - 批量重命名文件