LINUX.ORG.RU

парсим значение строки в файле. awk?


0

0

есть файл со строкой: OPTIONS (ERRORS=1000, LOAD=20000000, ROWS=500000, BINDSIZE=10000000)

мне нужно написать скрипт считывающий значение ERRORS из данной строки данного файла, т.е. значение 1000. Ковыряюсь с awk, но должен сказать, что я не силен в regular expressions.

Для простоты, подрузамеваем, что в файле только одна строка.

anonymous

> echo 'OPTIONS (ERRORS=1000, LOAD=20000000, ROWS=500000, BINDSIZE=10000000)' | awk -FERRORS '{ printf $2 }' | awk -F= '{ printf $2 }' | awk -F, '{ printf $1 }'

sda00 ★★★
()
Ответ на: комментарий от sda00

> echo 'OPTIONS (ERRORS=1000, LOAD=20000000, ROWS=500000, BINDSIZE=10000000)' | awk -FERRORS= '{ printf $2 }' | awk -F, '{ printf $1 }'

sda00 ★★★
()
Ответ на: комментарий от sda00

> echo 'OPTIONS (ERRORS=1000, LOAD=20000000, ROWS=500000, BINDSIZE=10000000)' | awk -FERRORS= '{ printf $2 }' | awk -F, '{ printf $1 }' | awk -F\) '{ printf $1 }'

(если ERRORS последний)

sda00 ★★★
()
Ответ на: комментарий от sda00

а я не знаю будет ERRORS первым или последним!!!

в этом то и прикол, не могу я опираться на запятые и скобки

anonymous
()
Ответ на: комментарий от anonymous

вот универсальное лекарство:

echo "OPTIONS (LOAD=20000000, ROWS=500000, BINDSIZE=10000000, ERRORS=1000)" | sed "s/)//g"| sed "s/ERRORS=/$/g"| cut -f 2 -d "$" | cut -f 1 -d ","

респект Матвею из Марселя :)

anonymous
()
Ответ на: комментарий от anonymous

>> в этом то и прикол, не могу я опираться на запятые и скобки

??? у вас всё хорошо с головой ???

> echo 'OPTIONS (ERRORS=1000, LOAD=20000000, ROWS=500000, BINDSIZE=10000000)' | awk -FERRORS= '{ printf $2 }' | awk -F, '{ printf $1 }' | awk -F\) '{ printf $1 }'

буде он первый или последний - какая разница?

sda00 ★★★
()
Ответ на: комментарий от vinni_puh

:) тормознул :) решь шла о awk

echo 'OPTIONS (ERRORS=1000, LOAD=20000000, ROWS=500000, BINDSIZE=10000000)' | awk '/ERRORS/ {match($0,"ERRORS=[[:digit:]]+"); print substr($0, RSTART, RLENGTH)}'

vinni_puh
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.