LINUX.ORG.RU
Ответ на: комментарий от sdio
Но учитывая, что башизмы считаются плохим тоном, то лучше резать седом: str="`echo $str | sed 's/^[^:]+//'`"

Подразумевается, что разделитель ":".
gaa ★★
()
Ответ на: комментарий от beastie
> это имо не башизм -- по крайней мере эти конструкции есть и в ksh

На посиксшеллизм это всё равно мало похоже :)
gaa ★★
()
Ответ на: комментарий от sdio
> 1. echo "$SUBJECT" | grep bash

Ты в первый раз встречаешь, что шелл как таковой "башем" называют?

> 2. Чего сразу 'sed'? cut не хватает?


Ага, хватает.
gaa ★★
()
echo bash rules | (read i j; echo $i)

Если, конечно, символ-разделитель -- это что-то из $IFS
lodin ★★★★
()
Ответ на: комментарий от gena2x
>> str="`echo "$str" | sed -r 's/^[^:]+//'`", если быть более точным
> Нет, это ещё хуже :(


А что тебе не нравится, кроме того, что тут я иду через (неразборчиво) и не использую cut?
gaa ★★
()
Ответ на: комментарий от gena2x
> Что будет если str='"abc"' или str="abc<перевод строки>ABC"

Будет (неразборчиво). Ну а что ты хотел в условиях дефицита входных данных?
gaa ★★
()
Ответ на: комментарий от gaa
> Будет (неразборчиво). Ну а что ты хотел в условиях дефицита входных данных?

И это неправильный ответ... Ну зачем ты так быстро сдался? ;)

Вот правильный ответ с sed и echo, но только для bash, может кто есть умудрённее меня в шелле и поправит: str=$(echo " $str"|sed 's/^.\([^:]\+:\|\)//')

gena2x ★★★
()
Ответ на: комментарий от gena2x
На мой взгляд cut удобней

str="первое поле: второе поле: третье поле"
echo $str | sed 's/\([^:]\):.*/\1/'
echo $str | cut -f1 -d:
TGZ ★★★★
()
Вы не можете добавлять комментарии в эту тему: топик перемещен в архив.