LINUX.ORG.RU

bash обрезка текста после определеного символа.

 


0

2

Здравствуйте, пишу небольшой скрипт для добавления виртуальных хостов на сервере необходима ваша помощь. Задача заключается в следущем: Нужно обрезать имя домена с конца имени по "." тоесть example.com резать на example, погуглив нашел вот такую приблуду с cut

main @ work-pc  ~/Desktop/src
└─$ ▶ echo "example.com" | cut -d"." -f1
example
но режет она хорошо только домены первого уровня а вот второй уровень уже тут не прокатывает.
main @ work-pc  ~/Desktop/src
└─$ ▶ echo "mail.example.com" | cut -d"." -f1
mail
Прошу у вас помощи в релизиции обрезки именно с конца до мена и до первой точки.


Ответ на: комментарий от bormant

Благодарю вас уважаемый все роботает.

ceroz
() автор топика
Ответ на: комментарий от beastie

В квадратных скобках точку экранировать не требуется.

bormant ★★★★★
()
Ответ на: комментарий от bormant

А можно еще вопрос чтоб тему не создавать новую? как менять точки на тире.Стоит еще такая задача example.com менять на example-com

ceroz
() автор топика
Ответ на: комментарий от Ip0

А вот и правильный ответ. Мну тоже думал о нём, но не знал, что оно умеет в wildcard.

beastie ★★★★★
()
Ответ на: комментарий от bormant

Благодарю вас уважаемый, вы мне очень помогли!

ceroz
() автор топика
Ответ на: комментарий от sedquest

Кто будет корневой домен отрезать? Невыполняющий задачу код действительно неистово глуп, не находите?

bormant ★★★★★
()
Ответ на: комментарий от sedquest

твой код, кстати, ничего не отрезает.

вам показалось

echo "mail.example.com" | sed 's/\.[^\.]*$//;y/./-/'
mail-example
echo "mail.example.com" | sed 's/\.[^.]*$//;y/./-/'
mail-example

sed --version
sed (GNU sed) 4.2.2

с отрезанием проще вот так сделать ... | sed ... | sed ...

зачем два раза дергать sed, если ему в одном скрипте две замены можно передать (см.выше).

bormant ★★★★★
()
Последнее исправление: bormant (всего исправлений: 3)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.