私は大きなログファイルを持っています。そこから、具体的なデータを抽出する必要があります。正確には、繰り返し表示される別個のフィールドの値です。つまり、多くのCDR、などのコールタイプ、発信番号、としてフォーマットgrep出力の列
オリジナルテキストの書式は以下の通りである:
:Reason Code:"XXX", Result Code:XXX, Desc: "XXX"
..
A_NUMBER.ADDRESS = XXX
..
は次のようにのように見える必要な行を取得するために私が管理しているegrepの使い方
Reason Code:"XXX", Result Code:XXX, Desc: "XXX"
RECORD_IDENTIFICATION.FILE_ID: XXX
A_NUMBER.ADDRESS = XXX
Call is from XXXX, VDATE=XXXX.
私は、私は外観が本当に興味がない、表スタイルでそれらをフォーマットすることができるという理由でグループ化され、FILE_ID、A_Numと日付を呼び出して、列見出しとして機能し、
Reason Code | File_ID | A_Number | Date
xxxx | xxxx | xxxx | xxxx |
よう ておりません同じ呼び出しに属するために、要素を連続させたいだけです。
私はawk、sed、printfのいろいろな変種を使いましたが、何も動作していないようです。
私はprintfの
printf "%-205s\n" $(grep -E 'Reason Code|RECORD_IDENTIFICATION.FILE_ID|A_NUMBER.ADDRESS|Call is from' file.err)
又は
printf "%-65s | %-65s | %-65s | %-65s" $(grep -E 'Reason Code|RECORD_IDENTIFICATION.FILE_ID|A_NUMBER.ADDRESS' file.err | awk 'FS = "\n" {print $1}')
のパラメータとして総文字値を置くことを試みたが、出力の値はスクランブルと使用できません。
私の意見では、解決策はawkがサポートしていると思われる何らかのループに置かれるかもしれませんが、私はそれを並べ替えることができません。
ご協力いただければ幸いです。
はあなたがsed
であなたのgrep
コマンドの出力を変換することができますあなたに
あなたの質問を[編集]あなたのサンプル入力の最小例とそれに対応する出力を表示するために質問を編集します。試してみたら、それも見せてください。 –