Анализ строки с помощью регулярного выражения

Как проанализировать вывод строки

5 Secs ( 2.2889%) 60 Secs ( 2.5874%) 300 Secs ( 2.6215%)    

взять только 2.6215

-2
задан 31 March 2020 в 14:56
3 ответа

Использование grep и lookbehind / lookahead:

grep -Po "(?<=Secs \( )[0-9.]*(?=%\)$)"

Использование sed:

sed 's/.*Secs ([[:space:]]*\([0-9.]*\)%)$/\1/g'
0
ответ дан 4 January 2021 в 10:29

Лично я придерживаюсь принципа простоты of guy:

./command | awk '{print $12}' | sed 's/%)//'
0
ответ дан 4 January 2021 в 10:29

Предположим, вы используете bash, что-то вроде этого?

PATTERN="(\d+\.\d{4})%\)$"
if [[ "${VALUE}" =~ ${PATTERN} ]] ; then 
   VALUE="${BASH_REMATCH[1]}"
fi 

Переработано из этого сообщения о переполнении стека .

0
ответ дан 4 January 2021 в 10:29

Теги

Похожие вопросы