Замените имя файла на filepath на sed

966
Alex Kahn

Я хочу заменить строку

/opt/local/lib/ruby/gems/1.8/gems/cucumber-0.3.99/lib/cucumber.rb

со строкой

/opt/local/lib/ruby/gems/1.8/gems/cucumber-0.3.99/lib/

в командной строке, вероятно, используя sed. Я не могу за всю жизнь понять, какое регулярное выражение заменить на sed. Или, может быть, Sed даже не правильный инструмент для работы. Любая помощь будет оценена.

0

1 ответ на вопрос

8
Marcin

нет необходимости в седе:

dirname /usr/local/bin/program

вернет / usr / local / bin

Нет даже необходимости в `dirname` :-). Если строка хранится в `$ MYPROGRAM`, то` $ `удаляет все, включая и после последней косой черты, оставляя вам путь к` MYPROGRAM`. Это поведение расширения определяется POSIX. Однако `dirname` лучше обрабатывает относительные пути и такие вещи, как множественные слэши. Daniel Andersson 12 лет назад 0
Ухоженная! Какая версия bash должна работать? `dirname` достаточно стар и стандартен, чтобы он работал практически везде. Marcin 12 лет назад 0
@Marcin: работает с любой версией Bash; он должен работать со всеми стандартными (= POSIX) оболочками. Кроме того, в отдельном примечании, если вы отвечаете кому-то из комментариев: если вы начнете комментарий с "@username", этот пользователь будет уведомлен об ответе через сайт (я только что случайно нашел свой комментарий сейчас, через неделю потом). Daniel Andersson 12 лет назад 0

Похожие вопросы