我有这个文件tes2
:
Topic:AURA.REP.JSON PartitionCount:1 ReplicationFactor:2 Configs:
Topic:AUX-SPS-WAVN.OPERATIONS PartitionCount:1 ReplicationFactor:2 Configs:min.insync.replicas=2,delete.retention.ms=86400000,retention.bytes=-1
Topic:AUX-SPS-WAVN.OPERATIONS-DESA PartitionCount:3 ReplicationFactor:3 Configs:retention.ms=172800000
Topic:AUX-SPS-WAVN.ORPHAN-PUPPSS PartitionCount:1 ReplicationFactor:2 Configs:min.insync.replicas=2,delete.retention.ms=86400000,retention.bytes=-1
Topic:AUX-SPS-WAVN.ORPHAN-PUPPSS-DESA PartitionCount:3 ReplicationFactor:3 Configs:retention.ms=172800000
Topic:AUX-SPS-WAVN.ORPHAN-PUSRCI PartitionCount:1 ReplicationFactor:2 Configs:min.insync.replicas=2,delete.retention.ms=86400000,retention.bytes=-1
Topic:AUX-SPS-WAVN.ORPHAN-PUSRCI-DESA PartitionCount:3 ReplicationFactor:3 Configs:retention.ms=172800000
Topic:AUX-SPS-WAVN.ORPHAN-PUSUBP PartitionCount:1 ReplicationFactor:2 Configs:min.insync.replicas=2,delete.retention.ms=86400000,retention.bytes=-1
Topic:AUX-SPS-WAVN.ORPHAN-PUSUBP-DESA PartitionCount:3 ReplicationFactor:3 Configs:retention.ms=172800000
Topic:service_check_result PartitionCount:6 ReplicationFactor:1 Configs:cleanup.policy=delete,max.message.bytes=1000012,min.insync.replicas=1,retention.ms=604800000,delete.retention.ms=86400000,retention.bytes=-1
....
我想按以下方式过滤:主题,分区计数,min.insync.replicas,cleanup.policy,retention.ms,max.message.bytes,retention.bytes
我正在使用以下代码:
awk '
match($0,/Topic:[^ ]*/){
topic=substr($0,RSTART+6,RLENGTH-6)
match($0,/PartitionCount:[^ ]*/)
partition=substr($0,RSTART+15,RLENGTH-15)
match($0,/min.insync.replicas[^,]*/)
mininsync=substr($0,RSTART+20,RLENGTH-20)
match($0,/cleanup.policy[^,]*/)
cleanup=substr($0,RSTART+15,RLENGTH-15)
match($0,/retention.ms[^,]*/)
retention=substr($0,RSTART+13,RLENGTH-13)
match ($0,/max.message.bytes[^,]*/)
maxmessage=substr($0,RSTART+18,RLENGTH-18)
match ($0,/retention.bytes[^,]*/)
retentionbytes=substr($0,RSTART+16,RLENGTH-16)
print
topic",",partition",",mininsync",",cleanup",",retention",",maxmessage",",retentionbytes
topic=""
}
' test2
但我得到:
AURA.REP.JSON, 1, , , , ,
AUX-SPS-WAVN.OPERATIONS, 1, 2, , 86400000, , -1
, , SPS-WAVN.OPERATIONS-DESA, 3, , , 172800000
AUX-SPS-WAVN.ORPHAN-PUPPSS, 1, 2, , 86400000, , -1
, , SPS-WAVN.ORPHAN-PUPPSS-DESA, 3, , , 172800000
AUX-SPS-WAVN.ORPHAN-PUSRCI, 1, 2, , 86400000, , -1
, , SPS-WAVN.ORPHAN-PUSRCI-DESA, 3, , , 172800000
AUX-SPS-WAVN.ORPHAN-PUSUBP, 1, 2, , 86400000, , -1
, , SPS-WAVN.ORPHAN-PUSUBP-DESA, 3, , , 172800000
我不知道为什么。
谢谢
您有一个表单为:
key1:value1 key2:value2 key3:value3
其中一个值的形式为:
key1=value1,key2=value2,key3=value3
使用此答案,我们可以编写以下代码:
awk '
function str2map(str,fs1,fs2,map, n,tmp) {
n=split(str,map,fs1)
for (;n>0;n--) {
split(map[n],tmp,fs2);
map[tmp[1]]=tmp[2]; map[tmp[1],"full"]=map[n]
delete map[n]
}
}
BEGIN{OFS=","}
{ str2map($0," ",":",map_main) }
{ str2map(map_main["Configs"],",","=",map_config) }
{ print map_main["Topic"], map_main["PartitionCount"],
map_config["min.insync.replicas"], map_config["cleanup.policy"],
map_config["delete.retention.ms"], map_config["max.message.bytes"],
map_config["retention.bytes"]
}' file
这将创建以下输出:
AURA.REP.JSON,1,,,,,
AUX-SPS-WAVN.OPERATIONS,1,2,,86400000,,-1
AUX-SPS-WAVN.OPERATIONS-DESA,3,,,,,
AUX-SPS-WAVN.ORPHAN-PUPPSS,1,2,,86400000,,-1
AUX-SPS-WAVN.ORPHAN-PUPPSS-DESA,3,,,,,
AUX-SPS-WAVN.ORPHAN-PUSRCI,1,2,,86400000,,-1
AUX-SPS-WAVN.ORPHAN-PUSRCI-DESA,3,,,,,
AUX-SPS-WAVN.ORPHAN-PUSUBP,1,2,,86400000,,-1
AUX-SPS-WAVN.ORPHAN-PUSUBP-DESA,3,,,,,
service_check_result,6,1,delete,86400000,1000012,-1