これは私のファイルです:
print energy 1 end
Local net energy (PE 0) = 1.635393034217E+05 kJ/mol
Global net ELEC energy = 1.635393034217E+05 kJ/mol
print energy 2 end
Local net energy (PE 0) = 1.682997967326E+05 kJ/mol
Global net ELEC energy = 1.682997967326E+05 kJ/mol
数字が必要ですが、どちらが適しているかを知る唯一の方法はラインですprint
。これまで、私はこのコマンドを使って問題を解決しました。
tail -16 file.txt | head -1 | awk '{print $6}'
しかし、この方法は良くないと思います。行番号に依存する必要があります。データが数千行の途中にある場合は失われます。これについてのより良いオプションを知っていますか?
ベストアンサー1
埋め込み(推測)各フィールドの後に2行目の6番目print
のフィールドを印刷すると仮定すると、次のようになります。
awk '/print/{if (getline > 0 && getline > 0) print $6}'
または:
awk '!--n {print $6}; /print/ {n=2}'
最初の行の最後のフィールドにGlobal
最初の項目の後に表示されるフィールドを含めるには、次の手順を実行しますprint energy 1 end
。
awk '/print energy 1 end/{found=1}; found && /Global/ {print $(NF-1); exit}'
ゲームの上の行のデータを印刷するには、まずデータを記録してからプレイしながら記録したデータを印刷する必要があります。たとえば、次を含む最初のフィールドの前の行にある6番目のフィールドを印刷しますprint
。
awk '/print/{print recorded;exit};{recorded=$6}'