Как извлечь вторые числа в этом тексте с помощью grep, управляют в человечности.
имя файла: Results.html? owner=12345
14219,98.2,31-s,19225
39219,92.7,31-s,29225
ouput требовал:
12345:98.2
12345:92.7
Спасибо
С GNU grep
, можно переключиться на режим PCRE, где можно использовать lookarounds для соответствия числу, окруженному запятыми:
$ grep -HPo '(?<=,)[0-9.]*(?=,)' file
file:98.2
file:92.7
OTOH, если Ваши данные разграничены запятой более оптимальный вариант, мог бы быть Awk:
$ awk -F, '{print FILENAME ":" $2}' file
file:98.2
file:92.7
или эквивалентно в жемчуге perl -F, -nlE '{say "$ARGV:$F[1]"}' file
Для разделения имени файла в Awk, можно использовать
$ awk -F, '{split(FILENAME,a,/=/); print a[2] ":" $2}' Results.html\?owner\=12345
12345:98.2
12345:92.7
или (немного более эффективно) если у Вас есть GNU Awk
gawk -F, 'BEGINFILE{split(FILENAME,a,/=/)} {print a[2] ":" $2}' Results.html\?owner\=12345
Согласно этому потоку, нет правильного способа достигнуть того использования RegEx
и grep
.
В Вашем случае можно получить желаемый второй столбец входных данных Вы если, с помощью awk
или sed
. Использование в качестве примера awk
представлен рев:
#assuming test.dat contains your data
awk -F"," '{ print $2 }'
#assuming you want to read data from stdout
echo "14219,98.2,31-s,19225" | awk -F"," '{ print $2 }'