Вход для пользователей

Работа со строками в bash

Изображение пользователя CORPSE.

Не хватает опыта для работы со строками на баше. Скажем, как получить позицию вхождения подстроки "a" в строку "b"? Как отрезать от строчки, произвольное число символов с конца? И много других как. Понимаю, что скорее всего есть какие-то изящные и красивые решения, без перебора символов по циклу, но вот найти их так и не смог. Может быть кто-нибудь подскажет?

Комментарии

Изображение пользователя Grifon.

на bash не стоит этим заниматься. лучше используй awk, perl, sed и т.п. там всё есть нативно с разными нюансами

Изображение пользователя CORPSE.

Оно и понятно. awk, sed, cut, grep - это всё приветствуется. Подскажи мне элегантное решение с их помощью, я не против.

А вот перл - не хочется от него зависеть. Скажем, на том же линуксовом роутере перла нет и не на любом шелле есть права, чтобы поставить перл, а вот то, что перечислено выше - есть практически везде, ибо весит копейки и памяти ест меньше скриптов на перле.

[root@brain root]# mount /dev/hands /mnt/ass -o nosuid,umask=000

Позиция вхождения подстроки:

echo "Software is " | awk '{print(index($1, "ware"));}'

Отрезание допустим 3х символов с конца строки:

echo "like SEX " | sed 's/.\{3\}$//'

Ну или 4х с начала:

echo "it\`s better, when it\`s FREE" | sed 's/^.\{4\}//'

А вообще в основном все делается через регулярки и ф-ции awk.
Реф по ф-циям и командам sed, и awk

Изображение пользователя CORPSE.

О, огромное спасибо! :) То, что надо!

[root@brain root]# mount /dev/hands /mnt/ass -o nosuid,umask=000

Изображение пользователя PhoeniX.

Есть ещё ABSG. http://gazette.linux.ru.net/rus/articles/abs-guide/x4165.html
Я убил ICQ. Пользуйтесь Jabber. phoenix@2on.net

Изображение пользователя CORPSE.

Совсем чудно! :) Благодарю! :)

[root@brain root]# mount /dev/hands /mnt/ass -o nosuid,umask=000

absg эт классика :)

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".