0

以下のコードでは、パイプ コマンドが出力を次のコマンドに渡すことを知っています。しかし、 awk 実行の場合には疑問があります。私の疑問は、各 awk ブロックがファイル内のすべての行を反復するのか、それとも行を 1 つずつ反復するのかということです。より明確に、そして私が想定したように...

1) 最初の awk ブロックは最初の行を繰り返します。

2) 条件が満たされる場合、その行を出力します。(これを次の awk ブロックに渡します)

3) それ以外は何もしない

4) 次の awk ブロックは、この出力を受け取り、その特定の行を処理します。

5) ファイルreceipt.tmpに書き込みます

このように処理したり、

1) 最初の awk ブロックは、そのファイル内のすべての行を反復処理します。

2) 出力を次の awk ブロックに渡す

3) 次の awk ブロックは、最初の awk ブロックを通過した出力に対して動作します。

私を助けてください。このコマンドを実行するオプションはありません。前もって感謝します!

cat > /tmp/pay.dat
grep -v '^TRAILER' /tmp/pay.dat 

| \

awk '{
    if ((substr($0,145,2) != "CA")
    { 
        print $0 
    }
}'

|\

awk 'BEGIN{OFS=""} \
{
    if (substr($0,38,1) == "X") \
    { 
        print substr($0,1,37), "S", substr($0,39) 
    } \

     else { 
        print $0 
    }
}' > /tmp/receipt.tmp
4

1 に答える 1