Позиция подстроки в строке

Пытаюсь в скрипте найти позицию вхождения подстроки в строке. Проштудировал \"Advanced Bash-scripting guide\", но ничего кроме expr index не нашел. А он не годится, т.к. при поиске в строке \"сам дурак\" слова \"дурак\" выдает 2, т.к. буква \"а\" нашлась раньше всего слова целиком. Наверняка же есть средство - задачка же тривиальная!!!
Это не совсем обычная операция в shell scripting и скорее всего то, что вы действительно хотите, делается по-другому.
Если вы скажете чего нужно или код покажете, то я подскажу как это сделать.

Но если вам действительно нужно то, что вы спрашиваете, то попробуйте так:
awk 'BEGIN {print index(\"test string\", \"string\")}'
6
Спасибо большое!
Нужно: в строке Depends удалить вхождение имени пакета. Т.к. пакеты в поле пе просто перечислены через запятую, а еще и содержат конструкцию вида (=х.ххх.х-х), то команда замены типа ${var:start:count} не применима. Следующей мыслью было найти позицию вхождения искомой подстроки в строку, в остатке найти позицию первой запятой и склеить \"голову\" с \"хвостом\" выбросив \"середину\". Но вот на этапе нахождения позиции все и застопорилось.
Дело в том, что строки хранятся в переменных. И, если способ передать одну строку в AWK мне подсказали на работе (echo $var | awk '{print $0}'), то как работать в awk с двумя строковыми переменными, я пока додуматься не могу.
Ваша задача обычно решается sed-ом:
echo \"Depends: debhelper (>> 3.0.0), groff, gettext, texinfo, libssl-dev (>= 0.9.8), dpatch\" | sed 's/debhelper[^,]*, //'
Depends: groff, gettext, texinfo, libssl-dev (>= 0.9.8), dpatch

Если я правильно вас понял, то нужно удалить и имя пакета и возможную конструкцию в скобках. Этот код так и делает. Правда он не будет работать для последнего пакета. Но и это можно сделать. Мне нужно только знать правильно ли я вас понял и я доделаю.
Wall:Ваша задача обычно решается sed-ом:
...
Если я правильно вас понял, то нужно удалить и имя пакета и возможную конструкцию в скобках. Этот код так и делает. Правда он не будет работать для последнего пакета. Но и это можно сделать. Мне нужно только знать правильно ли я вас понял и я доделаю.

Вы абсолютно правильно поняли. Большое спасибо! Жду вариант, работающий и в случае, если удаляемый пакет последний. Может имеет смысл
1) сначала добавить к строке запятую
2) обработать sed-ом
3) убрать добавленную запятую
Но есть и вопрос - как загнать в строку sed-а содержимое переменной, которое нужно вырезать из строки, которую он будет обрабатывать?
Забудьте все эти выкрутасы с подстроками, добавлениями и т.д. Это же шелл, а не бэйсик какой-нибудь.
Вот код и ответ на вопрос с примерами для всех трех возможных положений:
package=\"debhelper\"
$ echo \"Depends: debhelper (>> 3.0.0), groff, gettext, texinfo, libssl-dev (>= 0.9.8), dpatch\" | sed \"s/$package[^,]*,* *//;s/,[ ]*$//\"
Depends: groff, gettext, texinfo, libssl-dev (>= 0.9.8), dpatch
$ echo \"Depends: groff, gettext, debhelper (>> 3.0.0), texinfo, libssl-dev (>= 0.9.8), dpatch\" | sed \"s/$package[^,]*,* *//;s/,[ ]*$//\"
Depends: groff, gettext, texinfo, libssl-dev (>= 0.9.8), dpatch
$ echo \"Depends: groff, gettext, texinfo, libssl-dev (>= 0.9.8), dpatch, debhelper (>> 3.0.0)\" | sed \"s/$package[^,]*,* *//;s/,[ ]*$//\"
Depends: groff, gettext, texinfo, libssl-dev (>= 0.9.8), dpatch

Кстати, если вы еще и из файла читаете построчно только для этого, а потом пишете в другой, то этого тоже не нужно делать.
sed умеет делать подстановку в файле самостоятельно.
Большое спасибо! С заменой sed-ом строк в файле, думаю, тоже будут сложности - в файле искомая строка присутствует не только в разделе Depends. Так что пока мне проще представить как закрутить цикл для обработки файла, чем сообразить шаблон для sed. :(
Он будет отличаться ненамного. Но, впрочем, как хотите.
Написали бы что именно хотите сделать.
Сдается мне что вам нужен perl :)
А что, перл штатно установлен на таблетке? Если нет, то не подходит.
Что значит \"штатно\"?
Установлен обрезок перла. Полный пакет надо доустанавливать.
Думаю, что для таких дел хватит и \"обрезка\" Perl'а.
А чем, собственно, не устраивает предложенное решение? Вроде топикстартер доволен.