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 ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.