我有一个文件格式如下。任何人都可以在列中转换它? 我已经尝试过下面的awk命令,但是如果一个客户有多个主机名,它会创建更多的4列。如何使用shell脚本在行和列中转换我的文件
awk '/"customer_name":/{if (x)print x;x="";}{x=(!x)?$0:x","$0;}END{print x;}' filename
输入:
customer_name: "abc"
"HostName": "tm-1"
"LastDayRxBytes": 0
"Status": "offline"
"HostName": "tm-2"
"LastDayRxBytes": 0
"Status": "offline"
"HostName": "tm-3"
"LastDayRxBytes": 0
"Status": "offline"
"HostName": "new-va-threat-01"
"LastDayRxBytes": 0
"Status": "offline"
customer_name: "xyz"
"HostName": "tm-56"
"LastDayRxBytes": 10708747
"Status": "ok"
customer_name: "def"
customer_name: "uvw"
"HostName": "tm-23"
"LastDayRxBytes": 34921829912
"Status": "ok"
customer_name: "new cust"
"HostName": "tm-1-3"
"LastDayRxBytes": 33993187093
"Status": "ok"
customer_name: "a12 d32 ffg"
customer_name: "bcd abc"
customer_name: "mno opq"
customer_name: "abc dhg pvt ltd."
"HostName": "tm-10"
"LastDayRxBytes": 145774401010
"Status": "ok"
"HostName": "tm-ngtm-13"
"LastDayRxBytes": 150159680874
"Status": "ok"
"HostName": "new-ngtm-11"
"LastDayRxBytes": 207392526747
"Status": "ok"
"HostName": "old-ngtm-06"
"LastDayRxBytes": 17708734533
"Status": "ok"
"HostName": "tm-08"
"LastDayRxBytes": 559289251
"Status": "ok"
"HostName": "tm-12"
"LastDayRxBytes": 534145552271
"Status": "ok"
我希望它在柱被打印和行为:
Column 1 Column 2 Column 3 Column 4
CustName Host Last RX Status
abc tm-1 0 offline
abc tm-2 0 offline
abc tm-3 0 offline
abc new-va-threat-01 0 offline
xyz tm-56 10708747 ok
def
uvw tm-23 34921829912 ok
new_cust tm-1-3 33993187093 ok
a12 d32 ffg
acd abc
mno opq
abc dhg pvt ltd. tm-10 145774401010 ok
abc dhg pvt ltd. tm-ngtm-13 150159680874 ok
abc dhg pvt ltd. new-ngtm-11 207392526747 ok
abc dhg pvt ltd. old-ngtm-06 17708734533 ok
abc dhg pvt ltd. tm-08 559289251 ok
abc dhg pvt ltd. tm-12 534145552271 ok
Column4 \t栏3 \t栏3 \t Column4 客户名称\t主机名\t收到\t状态 ABC \t TM-1 离线 ABC \t TM-2 离线 ABC \t TM-3 离线 abc \t new-va-threat-01 offline xyz \t tm-56 OK DEF \t \t \t UVW \t TM-23 \t \t 34921829912确定 新CUST \t TM-1-3 \t \t 33993187093确定 A12 D32 FFG \t \t \t BCD ABC \t \t \t MNO OPQ \t \t \t abc dhg pvt ltd。 \t tm-10 \t 1.45774E + 11 \t ok abc dhg pvt ltd。 \t tm-ngtm-13 \t 1.5016E + 11 \t ok abc dhg pvt ltd。 \t new-ngtm-11 \t 2.07393E + 11 \t ok abc dhg pvt ltd。 \t old-ngtm-06 ok abc dhg pvt ltd。 \t tm-08 ok abc dhg pvt ltd。 \t tm-12 \t 5.34146E + 11 \t ok – Majeed
该评论中是否有任何非显而易见的含义?如果是,请编辑您的问题以传达它。 – Yunnosch
您的任何字符串是否可以包含':'或':'?怎么样逃脱'''(例如''''或''''')? –