Я хочу, чтобы разобрать действительно огромный лог-файл, здесь пример ярлык:сценария оболочки для разбора огромного файла журнала
===== 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 всегда начинается с «=====», а затем строку после этого каждая вторая линия начинается с «/ об/...», который предназначен для быть типом, поэтому f Мне уже удалось получить информацию, но реальная проблема начинается с имен серверов, которые перечислены после «rw = или ro =» (и повторяются после «root =»).
Он должен игнорировать каждую строку, где нет серверов, перечисленных после rw = или ro =.
Для каждого нового сервера, даже с одним и тем же типом, я хочу запустить новую строку, если имеется более одного перечисленного сервера, они разделены символом ':'.
Я думал, что это можно будет перечислить с помощью цикла, который содержит IFS ':'. Но я не совсем уверен, как это написать ...
Может кто-нибудь мне помочь? спасибо заранее
Я пробовал с:
awk -v RS="=====" -v OFS="," 'BEGIN {print "vFiler", "Type" } NF{print $1, $2}'
и петля в то время как я думаю, что может работать:
while IFS=':' read -r host $1-$#;
, но я не знаю, если петля правильно или где положи это.
Это должно было тебя r первый вопрос, вместо [this] (http://stackoverflow.com/q/26587589/2088135) –
В предыдущем вопросе вы получили некоторые результаты. Вы пытались «играть» с ними? – fedorqui
Да, у меня уже была петля с IFS, прежде чем я задал первый вопрос и захотел попробовать сам, но не работал – howdoesthiswork