2012-05-27 2 views
10

пример строки:Как разбить строку на прямой косой черты в Баш

/gasg/строка

ожидаемый результат: string

Символы на удалить: все символы между «/» символами включая символы

+0

'batween"/"символы' Что должно быть, если есть только одна косая черта или вообще нет косых черт? Или текст перед первой косой чертой? –

ответ

13

С sed:

$ echo "/gasg/string" | sed -e 's/\/.*\///g' 
string 

С Buil в Баше строками:

$ s="/gag/string" 
$ echo "${s##/*/}" 
string 

Ваши строки выглядят так же, как Unix имена пути. Именно поэтому вы можете также использовать утилиту basename - это returnes последнюю часть данного Unix имя пути:

$ basename "/gag/string" 
string 
# It works with relative paths and spaces too: 
$ basename "gag/fas das/string bla bla" 
string bla bla 
+0

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

+0

Я согласен, что первый '/' не нужен, но я добавил его, чтобы проиллюстрировать эту точку. –

+0

Ваши строки выглядят точно так же, как и Unix-пути. - Да, это было мое намерение получить последний partion данного пути и с basename его, как «find -exec basename {} \;», что для меня блестяще! Спасибо за совет. – user1306777

10

AWK также - использование слэш в качестве разделителя и печати последнего поля

echo "/gas/string" | awk -F/ '{print $NF}' 

или вырезать - но что будет работать только если у вас есть такое же количество каталогов раздеться

echo "/gasg/string" |cut -d/ -f 3 
2

вы можете использовать Баш строки манипуляции

a='/gasg/string' 
echo ${a##*/} 
Смежные вопросы