我正在尝试编写一个 perl 脚本来从文本文件中可用的任意表格数据生成 xml。为了讨论,假设我想从 linux 命令获取输出
df -k
并将其解析为我的 perl 脚本并即时生成一个 xml。
示例 check_disk_usage.log
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda3 56776092 5431448 48413988 11% /
/dev/sda1 101086 18993 76874 20% /boot
tmpfs 2021888 0 2021888 0% /dev/shm
现在为了生成 XML,我需要从这个表中提取标题并将它们存储在一个数组中以供以后使用(它们将用作 XML 中的开始和结束标记)我这样做的方式:
open my $file, '<', "$dir/check_disk_usage.log";
my $firstLine = <$file>;
close $file;
my (@header) = $firstLine =~ /(\S+)/g;
即我正在寻找所有一个或多个非空白模式(实际上是一个单词)并将它们保存在一个数组中。只要标题名称遵循单个单词的模式,这就可以正常工作
eg Filesystem,1K-blocks,Used etc
但是,当遇到标题名称 sa“Mounted on”时,它将中断,因为“Mounted”和“on”都将被视为不同的模式,因此将存储为不同的数组元素。有没有一种方法可以有效地从表中识别/提取标题。
PS:我知道,我可以使用 awk 用一些东西代替有问题的模式,然后解析文件。但是我需要事先知道“违规模式”,这是不可行的,因为我打算为任何任意表格数据编写这个脚本。
PSS:虽然我正在使用 perl,但我也对其他解决方案持开放态度(例如 php 等)
感谢你的帮助。