텍스트 파일에서 콘텐츠를 로드하고 그에 따라 데이터를 추출하는 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
정규식과 변수가 너무 많습니다.
두 가지 값을 얻으십시오.
$ 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