1

これは非常に紛らわしいので、ビルドから発行までのすべての手順を示します。

awk 'BEGIN { FS == /\s\s\s\s/ } ; 
    {
    if ( NF == 0 )
        next
    else
        {{ print "-------------NR = " NR "-----------------------NF = " NF }
        for (i = 0; i <= NF; i++)
            {{ print ( i, $i )}    }
        }
    }' 200_Undercounter_Series.txt > new.txt

望ましい結果が得られます (関連するレコードのみを含めました)。

-------------NR = 9-----------------------NF = 7
0                                 1.         3510090               Shelf Guard  (See SN Breaks)
1 1.
2 3510090
3 Shelf
4 Guard
5 (See
6 SN
7 Breaks)
-------------NR = 10-----------------------NF = 6
0                                      3515980               Shelf Guard  (See SN Breaks)
1 3515980
2 Shelf
3 Guard
4 (See
5 SN
6 Breaks)

レコード 9 のフィールド 1 と 2 の値、およびレコード 10 のフィールド 1 の値に注目してください。これらの 2 つのレコードをファイルの残りの部分から分離したいので、レコード 9 のフィールド 2 の値に注目します。

if ( NF == 0 )
    next
else
    {{ print "-------------NR = " NR "-----------------------NF = " NF }
    for (i = 0; i <= NF; i++)
        {if ( $2 = /[0-9][0-9][0-9][0-9][0-9][0-9][0-9]/)
            { print ( ">>", i, $i)}
        else
            { print ( i, $i )}
        }
    }
}' 200_Undercounter_Series.txt > new.txt

そして、私はこれらの結果を受け取ります:

-------------NR = 9-----------------------NF = 7
>> 0 1. 1 Shelf Guard (See SN Breaks)
1 1.
2 0
3 Shelf
4 Guard
5 (See
6 SN
7 Breaks)
-------------NR = 10-----------------------NF = 6
>> 0 3515980 1 Guard (See SN Breaks)
>> 1 3515980
>> 2 1
>> 3 Guard
>> 4 (See
>> 5 SN
>> 6 Breaks)

'>>' インジケータが指定されていないレコード ($2 = /regex/) にあるだけでなく、レコード 9 のフィールド 2 が = 0 になっていることに注意してください!!!

この時点で、私のプログラムには他のコードはありません。ここで何が欠けていますか?

ありがとう

4

2 に答える 2