awkを使用して正規表現の最初のインスタンスのみを取得する

awkを使用して正規表現の最初のインスタンスのみを取得する

.txt私のディレクトリには、双極子モーメントに関する情報を含む多くのファイルがあります。次のように進みます。

Dipole Moment: [D]
     X:     1.2808      Y:     0.2908      Z:     1.0187     Total:     1.6622
lorem ipsum
text 
that is 
not 
relevant 
Dipole Moment: [D]
     X:     1.2808      Y:     0.2908      Z:     1.0187     Total:     1.6622
more text

このファイルから総双極子モーメントを抽出したいと思います。次のスクリプトを実行しています。

awk '/Dipole Moment: \[D\]/{found=1;next} found{print $NF;found=""}' *.txt > dipole_bma.txt

スクリプトは1.6622を2回印刷します。すべての双極子モーメントは各ファイルに2回ずつ含まれていますTotal。正規表現がファイルに2回表示されるため、2回印刷されたようです。

私の質問は、各ファイルの合計双極子モーメントを一度だけ印刷するにはどうすればよいですか?

ベストアンサー1

使用nextfile氏名:

awk '/Dipole Moment: \[D\]/{found=1;next} found{print $NF;nextfile;}' *.txt

おすすめ記事