Как бы я разделить следующую строку в Bash - PullRequest
1 голос
/ 29 октября 2011

Предположим, у нас есть строка вида

first;second;third;fourth

Я хочу напечатать

second;third;fourth

Как бы я это сделал?

Ответы [ 5 ]

3 голосов
/ 29 октября 2011

Команда cut может сделать очень хорошо:

echo "first;second;third;forth" | cut -d';' -f2-
3 голосов
/ 29 октября 2011

Использовать подстановку параметров (начало совпадения; удалить самую короткую часть):

str="first;second;third;fourth"

echo "${str#*;}"
3 голосов
/ 29 октября 2011

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

expr "first;second;third;fourth" : '[^;]*;\(.*\)'
1 голос
/ 31 октября 2011
echo "first;second;thrid;fourth" | awk -F";" '{print substr($0,index($0,$2))}'

Многие из этих ответов работают, и я думаю, что cut может быть лучшим решением, но это медленная ночь, поэтому я добавил другое поле печати 2 в конец строки.

Очень похоже на другой вопрос:

Печать поля 'N' до конца строки

1 голос
/ 29 октября 2011
    $ v="first;second;third;fourth"
    $ echo ${v#first;}
    second;third;fourth
    $ q=${v#*;}
    $ echo $q
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...