質問: ログファイルからの改行の削除 ログファイルからいくつかの情報を抽出しようとしていますが、簡単に処理するために、そこから改行を削除する必要があります。必要な結果の例を次に示します。入力ファイル :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)
回答: 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 段落全体を読み込んでから、デフォルト(単一スペース)の出力区切り記号を使用して再フォーマットします。