Можно также узнать, какое устройство и раздел принадлежат UUID путем издания следующего как корня:
blkid
или путем издания следующего как пользователя
ls -l /dev/disk/by-uuid
Считайте grep
на его стандартном входе. Вот так, используя трубу ...
$ echo "$line" | grep select
... или здесь строка ...
$ grep select <<< "$line"
Также, вы можете заменить пробелы на новые строки перед смазыванием :
$ echo "$line" | tr ' ' '\n' | grep select
... или вы можете попросить grep
распечатать только совпадение:
$ echo "$line" | grep -o select
Это позволит вам избавиться от остальной части строки при наличии совпадения.
Редактирование: Упс, читайте слишком быстро, спасибо Марко. Для того, чтобы посчитать произошедшие события, просто пропустите любую из них в wc(1)
;)
Другое редактирование, сделанное после комментария lzkata, цитируя $line
при использовании echo
.
test=$line i=0
while case "$test" in (*select*)
test=${test#*select};;(*) ! :;;
esac; do i=$(($i+1)); done
Для такой простой вещи не нужно вызывать grep
.
Или как функция:
occur() while case "$1" in (*"$2"*) set -- \
"${1#*"$2"}" "$2" "${3:-0}" "$((${4:-0}+1))";;
(*) return "$((${4:-0}<${3:-1}))";;esac
do : "${_occur:+$((_occur=$4))}";done
Нужно 2 или 3 аргумента. Предоставление большего количества аргументов исказит его результаты. Можно использовать как:
_occur=0; occur ... . 2 && echo "count: $_occur"
...которая печатает счетчик появления .
в ...
, если это происходит не менее 2-х раз. Например:
count: 3
Если $_occur
при вызове либо пустой, либо не установлен
, то это никак не повлияет на переменные оболочки и вернет
1, если "$2"
произойдет в "$1"
меньше, чем "$3"
раза. Или, если вызывается только с двумя аргументами, он вернет
1 только в том случае, если "2"
не находится в "1"
. В противном случае он возвращает 0.
И так, в самом простом виде, вы можете сделать:
occur '' . && echo yay || echo shite
... что печатает...
shite
... но...
occur . . && echo yay || echo shite
... напечатает...
yay
Вы также можете написать его немного по-другому и опустить кавычки вокруг $2
в обоих утверждениях (*"$2"*)
и "${1#*"$2"}"}
". Если вы сделаете это, то можете использовать оболочковые глобусы для матчей типа sh[io]te
для теста на соответствие.