0

特定のフィールドを持たないレコードを表示する方法...まず、入力には特定のレコードとフィールドセパレーターが必要です

BEGIN {
  RS="";
  FS="\n";
}

ここに私の入力があります:

   <Row>
    <Cell><Data ss:Type="String">Networks menu (disabled)</Data></Cell>
    <Cell><Data ss:Type="String">Networks</Data></Cell>
    <Cell ss:Index="4"><Data ss:Type="String">Select</Data></Cell>
    <Cell><Data ss:Type="Boolean">0</Data></Cell>
    <Cell><Data ss:Type="String">Back</Data></Cell>
    <Cell ss:Index="8"><Data ss:Type="String" x:Ticked="1">1</Data></Cell>
    <Cell><Data ss:Type="String">&quot;Networks Sel&quot;,&quot;GPRC Mode&quot;</Data></Cell>
    <Cell ss:StyleID="s73"/>
    <Cell ss:StyleID="s73"/>
    <Cell ss:StyleID="s73"/>
   </Row>



   <Row>
    <Cell ss:StyleID="s93"><Data ss:Type="String">New Code?</Data></Cell>
    <Cell ss:StyleID="s62"/>
    <Cell ss:StyleID="s62"/>
    <Cell ss:StyleID="s62"/>
    <Cell ss:StyleID="s62"><Data ss:Type="Boolean">0</Data></Cell>
    <Cell ss:StyleID="s62"><Data ss:Type="String">Cancel</Data></Cell>
    <Cell ss:StyleID="s62"><Data ss:Type="Boolean">0</Data></Cell>
    <Cell ss:StyleID="s62"><Data ss:Type="String" x:Ticked="1">-1</Data></Cell>
    <Cell ss:StyleID="s62"><Data ss:Type="String">&quot;?|New Code?&quot;</Data></Cell>
    <Cell ss:StyleID="s95"/>
    <Cell ss:StyleID="s95"/>
    <Cell ss:StyleID="s95"/>
   </Row>



   <Row>
    <Cell ss:StyleID="s156"><Data ss:Type="String">New Message Arrived</Data></Cell>
    <Cell ss:Index="3"><Data ss:Type="String">ANIMATION_REC_MAIL</Data></Cell>
    <Cell><Data ss:Type="String">Read</Data></Cell>
    <Cell><Data ss:Type="Boolean">0</Data></Cell>
    <Cell><Data ss:Type="String">Back</Data></Cell>
    <Cell><Data ss:Type="Boolean">0</Data></Cell>
    <Cell ss:StyleID="s117"><Data ss:Type="String">-1</Data></Cell>
    <Cell><Data ss:Type="String">NOT EXIST </Data></Cell>
    <Cell ss:StyleID="s73"/>
    <Cell ss:StyleID="s73"/>
    <Cell ss:StyleID="s73"/>
   </Row>

1 つのレコードを除くすべての入力を表示するには、どの 2 番目のフィールドが「新しいコードですか?」(ここにいくつかの正規表現があります)

4

1 に答える 1

3

レコード間に空白行を残したい場合は、ORS変数も設定する必要があります。~2 番目のフィールドでawk の一致演算子を使用します。

awk '
    BEGIN {RS=""; FS="\n"; ORS="\n\n"} 
    $2 ~ /New Code\?/ {next} 
    {print}
'

@EdMorton が言及しているように、これはより簡潔に書くことができます。

awk 'BEGIN {RS=""; FS="\n"; ORS="\n\n"} $2 !~ /New Code\?/'
于 2012-12-05T19:03:14.520 に答える