【发布时间】:2014-12-22 17:30:30
【问题描述】:
我想解析一个非常大的日志文件,这里是一个示例快捷方式:
===== fspCIV0
/vol/vol0 -sec=sys,rw=fspsanp42.net,root=fspsanp42.net,nosuid
===== fcvCIS01
/vol/ARDW -sec=sys,rw
/vol/ARDW -sec=sys,rw
/vol/ARDW -sec=sys,rw,nosuid
/vol/ARDW -sec=sys,rw
/vol/ARDW -sec=sys,rw=none
/vol/lonulixda -sec=sys,rw=fcvsan10.net:fcvsan11.net,root=fcvsan10.net:fcvsan11.net
它会以这种方式持续几页......
期望的输出应该是:
vFiler, Type, host
fspCIV0, /vol/vol0, fspsanp42.net
fcvCIS01, /vol/lonulixda, fcvsan10.net
fcvCIS01, /vol/lonulixda, fcvsan11.net
vFiler 行始终以 '=====' 开头,后跟一个字符串 在此之后,每隔一行都以“/vol/...”开头,这意味着类型,到目前为止,我已经设法获取信息,但真正的问题始于在“rw=”之后列出的服务器名称或ro='(并在 'root=' 之后重复)。
它应该忽略在 rw= 或 ro= 之后没有列出服务器的每一行。
对于每个具有相同类型的新服务器,我想开始一个新行,如果列出的服务器不止一个,它们用 ':' 分隔。
我认为可以使用包含 IFS ':' 的循环列出它。 但是我不太清楚怎么写...
有人可以帮助我吗?提前致谢
我试过了:
awk -v RS="=====" -v OFS="," 'BEGIN {print "vFiler", "Type" } NF{print $1, $2}'
还有一个我认为可能有效的while循环:
while IFS=':' read -r host $1-$#;
但我不知道循环是否正确或放在哪里。
【问题讨论】:
-
这应该是你的第一个问题,而不是this
-
在上一个问题中你得到了一些结果。你试过和他们“玩”吗?
-
是的,在我问第一个问题并想自己尝试但它不起作用之前,我已经使用 IFS 循环了
-
@howdoesthiswork 然后向我们展示您的尝试。 它不工作是模棱两可的
-
是的,我添加了我正在尝试的内容