如何查看没有特定字段的记录... 首先,我的输入需要特定的记录和字段分隔符
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">"Networks Sel","GPRC Mode"</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">"?|New Code?"</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>
如何查看所有输入,执行一条记录,第二个字段是“新代码?” (这里将是一些正则表达式)
答案 0 :(得分:3)
如果要在记录之间保留空白行,还需要设置ORS
变量。您想在第二个字段上使用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\?/'