1

ログファイルの解析に問題があります... ログファイルのサンプルを次に示します (実際のライブでは、bash のカラー コードが含まれています)。

foo completely unintresting line bar
foo [INFO] [#############] bar 
foo [INFO] [#######______] bar 

「[#############]」と「[####### __ ]」の部分が必要です。これらの情報を取得するには、次のように興味をそそらない行を削除します。

CMD_TAIL=`tail -n 3 server.log | sed -r "s/\x1B\[([0-9]{1,3}((;[0-9]{1,3})*)?)?[m|K]//g" | grep -E '\[INFO\] \[[#_]+\]'`

しかし、CMD_TAIL を「歩く」と、次のようになります (空白は改行に置き換えられます)。

1: foo :2
1: [INFO] :2
1: [#############] :2
1: bar :2
...

必要な情報を抽出できるように、完全な行を取得するにはどうすればよいですか?

4

1 に答える 1

1

bash のようなシェルを使用している場合は、ループの前に内部フィールド区切り文字を改行に設定してみてください。

IFS=$'\n'
for TAIL in $CMD_TAIL; do
    echo "1: $TAIL :2"
done
于 2012-06-11T10:42:06.163 に答える