(シェルスクリプトを使用して)探している文字列の横に数字を印刷しようとしています。
たとえば、私のファイルには次の行が含まれています。
arg[30] = -Xmx4096m
文字列を使用してファイルを検索しており、Xmx
文字列に追加されてから数字の出力が必要で、出力には何も必要ありません。この目標をどのように達成できますか?
答え1
sed -n 's/.*Xmx\([0-9]\+\).*/\1/p' filename
説明する:
sed -n
そうするように指示された場合にのみ、sed印刷出力を実行します(byp
)。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