it-swarm-ja.com

ログファイルからの改行の削除

ログファイルからいくつかの情報を抽出しようとしていますが、簡単に処理するために、そこから改行を削除する必要があります。必要な結果の例を次に示します。

入力ファイル :

02/01/2018 08:18:14      ANR0407I Session 63121 started for administrator 
                         ADMIN_CENTER (DSMAPI) (Tcp/Ip SAP-DOC(52499)).SESSION: 
                         63121)

出力は:

02/01/2018 08:18:14      ANR0407I Session 63121 started for administrator ADMIN_CENTER (DSMAPI) (Tcp/Ip SAP-DOC(52499(SESSION: 63121)
1
Aziz Azizos

sedを使用して、一連の空白(スペースまたは水平タブ)文字で始まる行を前の行に結合できます。

sed -e :a -e '$!N;s/\n[[:blank:]]\{1,\}/ /;ta' -e 'P;D' file.log

これは例40のマイナーバリエーションです。等号 "="で始まる行を前の行に追加します Sed One-Linersの説明、パートI:ファイルの間隔、番号付け、テキストの変換と置換 =


「ブロック」が1つ以上の空白行で区切られている場合(これが原因であるかどうかを知るのに十分なログが表示されない)、awk in段落モード

awk -vRS= '{$1=$1} 1' file.log

段落全体を読み込んでから、デフォルト(単一スペース)の出力区切り記号を使用して再フォーマットします。

1
steeldriver