Вы можете настроить их размещение и внешний вид: http://www.omgubuntu.co.uk/2010/06/customize-the-ubunt-notification-bubbles/
С GNU sed (как установлено по умолчанию в любой системе Ubuntu):
{ sed -n '/::=BEGIN/Q 1'; i=$?; } <infile
Некоторые факты об этом ответе:
sed Q uits input, как только будет найдено самое первое совпадение в любом месте файла, что означает, что он больше не тратит время на чтение infile. sed возвращает в своем коде выхода числовое значение 0 или 1 в зависимости от того, не может / не может найти адресованное регулярное выражение. $i установлен на sed при возврате. Группировка { ; } используется для надежной обработки любой возможной ошибки перенаправления - $i не устанавливается в случае, если оболочка не может открыть файл вообще, избегая при этом ложных срабатываний.Это, вероятно, не должно быть предпочтительнее grep -q, хотя это может в принципе (как установлено по умолчанию в любой системе Ubuntu) выполнить все вышеперечисленное (если в обратный), сделайте это POSIXly и, как правило, быстрее.
Ответ уже заданный grep -q очень хорош, но немного терпение:
grep -q pattern ./infile; i=$((!$?))
Вы можете использовать это:
#!/bin/bash
while IFS= read -r line; do
case "$line" in *::=BEGIN*) i=1 && break;;
*) i=0
esac
done <file.txt
Это будет искать файл file.txt по строке, и если совпадение ::=BEGIN обнаружит, что оно установит переменную i=1 и выйдет. Если совпадение не найдено, переменная будет установлена как i=0.
sed (Stream EDitor) не является подходящим инструментом для такого рода вещей: вы можете просто использовать оператор bash if для соответствия вашему вводу с регулярным выражением:
#!/bin/bash
#...
input="$(< inputfile)"
[[ "$input" =~ ::=BEGIN ]] && i=1 || i=0
#...
[d2 ] input="$(< inputfile)": присваивает значение inputfile переменной $input [[ "$input" =~ ::=BEGIN ]] && i=1 || i=0: соответствует регулярному выражению ::=BEGIN по отношению к содержимому переменной $input; если есть совпадение, он присваивает 1 $i, в противном случае он присваивает 0 $i Моя sed версия
sed ':a;N;$!ba;s/\n/ /g' foo | sed '{/::=BEGIN/{s/.*/1/; b next}; s/.*/0/; :next}'
для сохранения в переменной i:
i=$(sed ':a;N;$!ba;s/\n/ /g' foo | sed '{/::=BEGIN/{s/.*/1/; b next}; s/.*/0/; :next}')
Пример:
$ echo "::=BEGIN" > foo
$ echo "::=BEGIN" >> foo
$ sed ':a;N;$!ba;s/\n/ /g' foo | sed '{/::=BEGIN/{s/.*/1/; b next}; s/.*/0/; :next}'
1
$ echo "::=NOT_BEGIN" > foo
$ sed ':a;N;$!ba;s/\n/ /g' foo | sed '{/::=BEGIN/{s/.*/1/; b next}; s/.*/0/; :next}'
0
$ echo "::=BEGIN" >> foo
$ sed ':a;N;$!ba;s/\n/ /g' foo | sed '{/::=BEGIN/{s/.*/1/; b next}; s/.*/0/; :next}'
1
Объяснение:
Если найдено ::=BEGIN, напечатайте 1 и перейдите к next Если ::=BEGIN не найден, напечатайте [ f10]