如何解决处理文本数据并转换为cvc / excel格式
我有一个要求来处理文本文件并收集两个字段并将这些字段从列转换为行,最后转换为电子表格。我尝试遵循以下网址 An efficient way to transpose a file in Bash。 不幸的是我无法正确理解代码。
这是我的文本文件
cat oralinux1_20191015.log
date collected ||11-11-2019 03:58:54 GMT ||
host name || oralinux1 ||
kernel version || 2.6.32-754.23.1.el6 || Good
kernel architecture || x86_64 || Good
hardware type || virtual || Good
No.of CPU || 4 || Good
Installed Mem || 16 Good || Good
/u01 file pct free || 28 % || Good
我的要求是
i need to pick 1st column and last column from the log and convert row as columns as csv/spread sheet
Date collected,host_name,kernal version,kernel architecture,hardware type,No.of.cpu,installed_mem,Good,good,good
因此,从技术上讲,文件的第一个字段将成为第一行,而最后一列中的对应值应成为第二行
请在这个问题上帮助我。老实说,我不是一个极端的shell脚本开发人员,所以最近开始了我的职业生涯。请帮助我。 自从我开始学习以来,我对shell脚本或python代码就可以了。
谢谢
杜尔加
解决方法
简化输入,输出变得容易得多。
while IFS='|' read -a line; # the sed eliminates redundant space and pipes
do line1="$line1${line[0]},"; # accumulate & comma-delimit headers
line2="$line2${line[2]},"; # accumulate & comma-delimit col3 values
done< <( sed -E 's,*\|+ *,\|,g' oralinux1_20191015.log ) # clean input
printf "%s\n" "$line1" "$line2" > relevant.csv # add newlines
,
假设:
- OP样本输出有多种错别字(例如,大写,第二列名称下划线,多余的空格等)
- 要在写入csv之前从字段中删除前导/后跟空格
- 前2列的值为空,但应以
,
的形式写入csv - 输入文件的最后一行将被忽略(即,它不会显示在OP样本输出中)
一个awk
解决方案:
awk -F "|" '
BEGIN { sep="" } # initial output field separator is empty string
/u01 file pct free/ { next } # ignore
{
gsub(/^[ \t]+/,"",$1) # strip leading whitespace from field 1
gsub(/[ \t]+$/,$1) # strip training whitespace from field 1
gsub(/^[ \t]+/,$5) # strip leading whitespace from field 5
gsub(/[ \t]+$/,$5) # strip training whitespace from field 5
labels=labels""sep""$1 # concatenate current field 1 onto variable
values=values""sep""$5 # concatenate current field 5 onto variable
sep="," # redefined separator as "," for rest of processing
}
END { printf "%s\n%s\n",# generate output
labels,values
}
' oralinux1_20191015.log
针对OPs示例输入文件运行以上操作会生成:
date collected,host name,kernel version,kernel architecture,hardware type,No.of CPU,Installed Mem,Good,Good
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。