2

で入力ファイルを処理したいawk。入力レコードのフィールドの 1 つによって示される複数のレコード タイプがあります。レコード タイプに特定の値が含まれている場合、現在のレコードに続いて、このタイプのレコードに固有のデータを含む N 個の追加レコードを処理する必要があります。

これは可能awkですか?

着信ファイルの形式のサンプルを次に示します。

 1 [001:01.0] [ 2] IOCTL 048477589
...
...
28 [002:02.0] [ 2] TX(56)
        81480d0d 0a524141 435a5955 5705243  .H...RAACZYW RC
        43544848 41303033 32203034 3032325  CTHHA0032 04025
        332d4343 43432d2d 52435554 4848412  3-CCCC--RCETHHA

したがって、基本的に、TX タイプのレコードが見つかった場合は、次の N 個のレコードを読み取り、データを処理して、16 進数と ASCII で同等のものを読み取ります。

??

4

1 に答える 1

2

あなたが何を目指しているのかは完全には明らかではありませんが、ここからが出発点になるかもしれません。print必要に応じて、ステートメントをより実質的な処理に置き換えます。

awk '
/^[ 0-9][0-9] / {
    # This is a record header line. Check if it is a TX.
    inTx = ($0 ~ / TX\([0-9]*\)$/);
    if (inTx) {
        print "Start of TX record.";
        next; # Avoid printing the header line below.
    }
}
inTx { print "TX:", $0; }
' file.txt

これは、スクリプトが何をするかをもう少し明確にするために、やや強力なサンプル ファイルです。

 1 [001:01.0] [ 2] IOCTL 048477589
...
...
28 [002:02.0] [ 2] TX(56)
        81480d0d 0a524141 435a5955 5705243  .H...RAACZYW RC
        43544848 41303033 32203034 3032325  CTHHA0032 04025
        332d4343 43432d2d 52435554 4848412  3-CCCC--RCETHHA
 1 [001:01.0] [ 2] IOCTL 048477589
 2 [dsfsdsdf] [ 2] BLORT
29 [002:02.0] [ 2] TX(77)
        abbababa 0a524141 435a5955 5705243  STUFFSTUFFSTUFF
        43544848 bbbbbbbb 32203034 d0d0d0d  CTHULUCTHULUCTH
        332d4343 43432d2d cccccccc 4848412  BLORTZORCHFNORD
 1 [001:01.0] [ 2] IOCTL 048477589
 2 [dsfsdsdf] [ 2] BLORT

スクリプト実行の転写:

Start of TX record.
TX:         81480d0d 0a524141 435a5955 5705243  .H...RAACZYW RC
TX:         43544848 41303033 32203034 3032325  CTHHA0032 04025
TX:         332d4343 43432d2d 52435554 4848412  3-CCCC--RCETHHA
Start of TX record.
TX:         abbababa 0a524141 435a5955 5705243  STUFFSTUFFSTUFF
TX:         43544848 bbbbbbbb 32203034 d0d0d0d  CTHULUCTHULUCTH
TX:         332d4343 43432d2d cccccccc 4848412  BLORTZORCHFNORD
于 2013-03-13T19:57:29.400 に答える