テキストファイルからコンテンツをロードし、それに応じてデータを抽出するbashスクリプトを使用しています。問題は、抽出されたデータの前に点が表示されることがあることです。
パスワード:
function str_extract() {
pattern=$1
# Extract
res=`grep "$pattern" $log | sed "s/$pattern//g"`
# Drop trailing ...
res=`echo $res | sed 's/[.][.][.]//g'`
# Trim
res=`echo $res | sed 's/^ *//g' | sed 's/ *$//g'`
echo $res
}
download=`str_extract "Download: "`
upload=`str_extract "Upload: "`
データ:
Retrieving speedtest.net configuration...
Testing from Telecomunicazioni S.p.A. ...
Retrieving speedtest.net server list...
Selecting best server based on ping...
Hosted by Coolnetwork (Arezzo) [26.09 km]: 111.547 ms
Testing download speed................................................................................
Download: 2.06 Mbit/s
Testing upload speed...............................................................................................
.Upload: 1.81 Mbit/s
Share results
抽出する
"2.06" #correct
".1.81" #wrong preceding dot
答え1
正規表現と変数が多すぎます。
2つの値を取得します。
$ sed -n 's/^\.*\(Download\|Upload\): //p' data
2.06 Mbit/s
1.81 Mbit/s
値を取得します。
$ sed -n 's/^\.*Upload: //p' data
1.81 Mbit/s
「Mbit/s」なしで値を取得します。
$ sed -n 's/^\.*Upload: \([0-9.]*\).*/\1/p' data
1.81
^\.*
前のポイントを削除(数字は関係ありません)\([0-9.]*\)
交換用キャプチャグループ\1