繁体   English   中英

Sed awk 文本格式

[英]Sed awk text formatting

我想用 awk 或 sed 之类的东西过滤和排序文本文件。 它不需要是单个命令,一个小的 bash 脚本也应该没问题。

#
home: address01
name: name01
info: info01
number: number01
company: company01
#
name: name02
company: company02
info: info02
home: home02
#
company: company03
home: address03
name: name03
info: info03
info: info032
number: number03
company: company032
#
name: name04
info: info04
company: company04
number: number04
number: number042
info: info042

我只需要姓名、号码和信息。 总是只有一个名称,但可以有 0,1 或 2 个数字和信息。 # 是唯一一致且始终在同一个位置的东西。

output 应该是:

name01,number01,,info01,
name02,,,info02,
name03,number03,,info03,info032
name04,number04,number042,info04,info042

到目前为止我尝试了什么:

awk -v OFS=',' '{split($0,a,": ")} /^name:/{name=a[2]} /^number:/{number=a[2]} /^info:/{info=a[2]; print name,number,info}' > dump.csv

考虑将逻辑更改为在“#”或最后一行之后打印(假设最后一个块没有以 # 终止):

awk -v OFS=',' '
{split($0,a,": ")}
/^name:/{name=a[2]}
/^number:/{number=a[2]}
/^info:/{info=a[2]}
/^#/ { print name,number,info}
END { print name,number,info}
' < w.txt  > dump.csv

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM