我试图解析一个测试文件。 该文件具有以下格式的用户名,地址和电话号码:
Name: John Doe1 address : somewhere phone: 123-123-1234 Name: John Doe2 address : somewhere phone: 123-123-1233 Name: John Doe3 address : somewhere phone: 123-123-1232只有几乎10k用户:)我想要做的是将这些行转换为列,例如:
Name: John Doe1 address : somewhere phone: 123-123-1234 Name: John Doe2 address : somewhere phone: 123-123-1233 Name: John Doe3 address : somewhere phone: 123-123-1232我宁愿用bash来做,但如果你知道如何在python中做到这一点,那么这个信息的文件位于/ root / docs / information中。 任何提示或帮助将不胜感激。
I'm trying to parse a test file. the file has username, address and phone in the following format:
Name: John Doe1 address : somewhere phone: 123-123-1234 Name: John Doe2 address : somewhere phone: 123-123-1233 Name: John Doe3 address : somewhere phone: 123-123-1232Only for almost 10k users: ) what I would like to do is convert those rows to columns, for example:
Name: John Doe1 address : somewhere phone: 123-123-1234 Name: John Doe2 address : somewhere phone: 123-123-1233 Name: John Doe3 address : somewhere phone: 123-123-1232I would prefer to do it in bash but if you know how to do it in python that would be great too, the file that has this information is in /root/docs/information. Any tips or help would be much appreciated.
最满意答案
GNU awk一种方法:
awk 'BEGIN { FS="\n"; RS=""; OFS="\t\t" } { print $1, $2, $3 }' file.txt结果:
Name: John Doe1 address : somewhere phone: 123-123-1234 Name: John Doe2 address : somewhere phone: 123-123-1233 Name: John Doe3 address : somewhere phone: 123-123-1232请注意,我已将输出文件分隔符( OFS )设置为两个制表符( \t\t )。 您可以将其更改为您喜欢的任何角色或一组角色。 HTH。
One way with GNU awk:
awk 'BEGIN { FS="\n"; RS=""; OFS="\t\t" } { print $1, $2, $3 }' file.txtResults:
Name: John Doe1 address : somewhere phone: 123-123-1234 Name: John Doe2 address : somewhere phone: 123-123-1233 Name: John Doe3 address : somewhere phone: 123-123-1232Note that, I've set the output file separator (OFS) to two tab characters (\t\t). You can change this to whatever character or set of characters you please. HTH.
更多推荐
发布评论