誰かが私を助けることができるかどうか疑問に思っています。次の行を含むファイルがあります。
W32i APP - 8.0.0.xxxxx shp 6SFE25~1.EXE
xxxxx は 5 桁の数字で、数字は毎回異なります。xxxxx を検索して変数に入れられるようにしたいので、この変数を使用できます。grep と sed を使用しますか?
perl -lne 'm/(\d{5})/g;print $1'
ここでテスト
#!/bin/sh
read < a.txt
[[ $REPLY =~ 8.0.0.([^\ ]*) ]]
echo ${BASH_REMATCH[1]}
出力
xxxxx
a.txt
W32i APP - 8.0.0.xxxxx shp 6SFE25~1.EXE
コード
num=$(< a.txt)
num=${num#*.0.0.} # "left" remove everything up to .0.0.
num=${num%% *} # "right" remove "all" after " " char
echo "num=${num}"
出力 xxxxx
変数修飾子がどのように機能するかの違いを理解するために時間を費やしていただければ幸いです${num#xxx}, ${num##xx}, ${num%x}, ${num%%x}
。高度なシェルはsed
、同様の置換もサポート${num/0/9}
して${num//0/9}
います。
IHTH