2017-02-11 8 views
2

Я пытаюсь использовать sed для печати только последней части URL-адреса из списка данных. Я хочу, чтобы он использовал sed, а не awk.Попытка напечатать часть каждой строки в sed

Входные данные, как это:

Place,AF,http://en.wikipedia.org/wiki/Benin 
Place Mat,NA,http://en.wikipedia.org/wiki/Saint_Barthelemy 
Orion,NA,http://en.wikipedia.org/wiki/Bermuda 

Я хочу просто напечатать последнюю часть URL, как это (ХОТИТЕ ЭТО):

Benin 
Saint Barthelemy 
Bermuda 

У меня так много проблем с/и \ потому что они существуют в URL-адресе !!!

Моя попытка до сих пор (tryng заменить материал, который я не хочу ни с чем)

sed -r s/$.+wikipedia\.org\/// in.txt 

Также мне нужно заменить пробелы _, но я могу использовать команду у у/_// Я думаю, ?

+0

Я думаю, что вы использовали $ вместо ^.^означает начало, а $ означает конец. Вы можете заменить символ '/' любым другим персонажем, как показал Кир. И вы приводите команды sed, чтобы избежать проблем с пробелами, например. –

+1

Для тех, кто интересуется awk: используйте '/' as separator, замените регулярным выражением в последнем столбце ('$ NF') на все' _' пробелами и затем напечатайте последний столбец ('$ NF'):' awk - F/'{gsub (/ _ /, "", $ NF); print $ NF} 'file' – Cyrus

ответ

2

С GNU СЭД:

sed 's/.*\///;s/_/ /g' file 

или заменить первый s/// на s||||, чтобы избежать побега:

sed 's|.*/||;s/_/ /g' file 

Выход:

 
Benin 
Saint Barthelemy 
Bermuda 
+0

Так вот как вы это сделали, он продолжал давать мне неприятности, так как sed использует косую черту –

 Смежные вопросы

  • Нет связанных вопросов^_^