Скрипт awk / sed для удаления текста - PullRequest
2 голосов
/ 21 мая 2010

В настоящее время мне нужен способ программного удаления некоторого текста из Makefiles, с которыми я имею дело. Теперь проблема в том, что (по какой-то причине) make-файлы генерируются с помощью команд ссылки -l<full_path_to_library>/<library_name>, тогда как они должны генерироваться с -l<library_name>. Так что мне нужен скрипт для поиска всех вхождений -l/ и последующего удаления вплоть до следующего /.

Пример того, с чем я имею дело

-l / дом / пользователь / путь / к / импульс / Библиотека / boost_filesystem

Мне нужно, чтобы это было

-lboost_filesystem

Как можно предположить, это мера остановки разрыва, пока я не исправлю реальную проблему (на стороне поколения), но в то же время мне будет очень полезно, если это сработает, и я не слишком хорош в своем awk и сед.

Спасибо за любую помощь.

Ответы [ 2 ]

4 голосов
/ 21 мая 2010
sed -i 's|-l[^ ]*/\([^/ ]*\)|-l\1|g' Makefile
1 голос
/ 21 мая 2010

Вот, пожалуйста,

echo "-l/home/user/path/to/boost/lib/boost_filesystem" | awk -F"/" '{ print $1  $NF  } '
...