以下のようにグローバルIDで区切られたデータの塊があります。次の例では、id値が最も高い最後のデータ塊を抽出する必要がありますid="82"
。
<gc type="global" id="80" totalid="80" intervalms="315080.595">
---Remaining data---------
</gc>
<gc type="global" id="81" totalid="81" intervalms="315080.595">
---Remaining data---------
</gc>
<gc type="global" id="82" totalid="82" intervalms="315080.595">
---Remaining data---------
</gc>
私は次のことができます。ただし、id値は2桁に制限されます。 id値に数値制限を適用せずに最後のデータ塊をどのようにエクスポートできますか?
data1=`grep "gc type="global"" abc.log| cut -c24-26|tail -n1`
lastdata="gc type="global"=$data1"
sed -n '/'"${lastdata}"'/,$p' abc.log>last_block_data.log
ベストアンサー1
cut
文字ごとにセルは必要ありません-c
。代わりに、cut
指定された-d
リミッタを使用できます。
grep '^<gc type="global"' <infile | cut -d\" -f4
80
81
82
これは"
、行内の4番目に区切られたフィールドのみを取得します。したがって、フィールドには、二重引用符がない限り、必要な数の文字(または必要に応じて数字)を含めることができます。
しかし、ライン全体が欲しいなら、そうする必要はありません。
sed -e'/^<gc type="global"/!{g;/./q;d;}' -e'h;$!d' <infile