LINUX.ORG.RU

Помогите с grep'ом

 , ,


1

3
>$ free -h | grep "Swap"
Swap:         6,6G         0B       6,6G

Помогите пожалуйста выцепить значение «0B» из этой строки с помощью грепа? Пробовал такое:

>$ free -h | grep "Swap" | grep -oP "[0-9BKMG,]+"
6,6G
0B
6,6G

но до 0B никак добраться не могу. Ну и засоветуйте годный и не слишком хардкорный мануал по регуляркам, раз на то пошло.

★★★★

Ну и засоветуйте годный и не слишком хардкорный мануал по регуляркам, раз на то пошло.

http://regexcrossword.com/

CrossFire ★★★★★
()

Помогите пожалуйста выцепить значение «0B» из этой строки с помощью грепа?

Могу помочь есть суп вилкой.

free -h | awk '$1 == "Swap:" {print $3}'

Для изучения регулярок есть масса мануалов, гуглится на раз-два.

Для слежения за ресурсами используй плагины от nagios, в данном случае check_swap

./check_swap -w 50% -c 20%
SWAP OK - 100% free (7622 MB out of 7627 MB) |swap=7622MB;3813;1525;0;7627


plugins$ ls -l check_swap 
-rwxr-xr-x 1 root root 47472 Dec  3  2014 check_swap

plugins$ ldd check_swap 
	linux-vdso.so.1 (0x00007ffdec3d0000)
	libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f38d6ba5000)
	libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f38d6988000)
	libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f38d6784000)
	libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f38d63db000)
	/lib64/ld-linux-x86-64.so.2 (0x00007f38d70b2000)

anonymous
()

тренируйся на выхлопе vmstat, там проще

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

Не читаю чужих ответов, тк это пустое. Алсо научиться признать своё поражение — очень полезно.

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

Не читаю чужих ответов, тк это пустое

Четкий пацанчик. Идет к успеху!

anonymous
()

Опять эти чёртовы кавычки, derlafff не нужен

free -h | grep -oP '\d+(?=B)'

правда `B` не выводится, мб не критично

Debasher ★★★★★
()
Последнее исправление: Debasher (всего исправлений: 3)

через sed

  1. -n — не печатать
  2. s/ — заменить
  3. * — пробелы
  4. [^ ]* — не пробелы
  5. \([^ ]*\) — первая группа не пробелов
  6. .* — любые символы
  7. \1 — ссылка на первую группу
  8. /p — печатать
$ free -h | sed -n 's/Swap: *[^ ]* *\([^ ]*\).*/\1/p'
0B

В более общем виде

$ free -h | sed -n 's/Swap:[[:space:]]*[^[:space:]]*[[:space:]]*\([^[:space:]]*\).*/\1/p'
0B

justAmoment ★★★★★
()
Ответ на: через sed от justAmoment

.* в конце регекспа — моветон

anonymous
()

Помогите пожалуйста выцепить значение «0B» из этой строки

grep searches the named input FILEs for lines containing a match to the given PATTERN.

man grep наверное дураки писали.

novitchok ★★★★★
()
Последнее исправление: novitchok (всего исправлений: 1)
Ответ на: комментарий от dexpl

Потребление ресурсов
2015

По твоему одна не длинная команда потребляет кучу ресурсов? К тому же я в awk не особо шарю, вот и написал как знаю.

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

За чтиво благодарствую. Ну тогда ладно, в очень суровых условиях (я ее на планшете проверял, куда суровее)

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