ファイルから文字列をgrepし、文字列の横に数字を出力する方法

ファイルから文字列をgrepし、文字列の横に数字を出力する方法

(シェルスクリプトを使用して)探している文字列の横に数字を印刷しようとしています。

たとえば、私のファイルには次の行が含まれています。

arg[30] = -Xmx4096m

文字列を使用してファイルを検索しており、Xmx文字列に追加されてから数字の出力が必要で、出力には何も必要ありません。この目標をどのように達成できますか?

答え1

sed -n 's/.*Xmx\([0-9]\+\).*/\1/p' filename

説明する:

  • sed -nそうするように指示された場合にのみ、sed印刷出力を実行します(by p)。
  • s/<p1>/<p2>/p検索して.then<p1>に置き換えてから、<p2>行を印刷します。
  • .*Xmx\([0-9]\+\).*文字列の後に数字が続きますXmx。数字は「キャプチャ」されます。
  • \1最初にキャプチャされたグループ。

Xmx人間の用語として:数字の後に数字を含む行を検索します。数字を書き留めてください。すべてを捨てて数字だけを守ってください。数字を印刷してください。

答え2

あなたのバージョンがPCREモードをサポートしている場合は、grep次のものを使用できます。grep -Po 'Xmx\K\d+'

前任者。

echo 'F arg[30] = -Xmx4096m' | grep -Po 'Xmx\K\d+'
4096

関連情報