Вы можете использовать sed
для поиска шаблона и делает действие на этой линии, как
sed '/search_pattern/{action}' your_file
действие, которое вы хотите сделать, это заменить последний cahracter в соответствии с >$
где >
- ваш желаемый символ, а $
означает, что искомый символ должен быть помещен в конец строки.
Действие для этого является командой sed
s///
, которая работает как s/search_pattern/replace_pattern/
.
Это выглядит для вашей цели, как:
sed '/#include "3rd-party/{s/>$/"/}' your_file
Но поскольку sed
является (s) Tream (ред) itor вы должны использовать команду флаг СЕПГА -i
, чтобы внести изменения в линии или конвейер с >
в новый файл.
Как это
sed -i '/#include "3rd-party/{s/>$/"/}' your_file
или как этот
sed '/#include "3rd-party/{s/>$/"/}' your_file > new_file
Пожалуйста, дайте мне знать, если это делает вашу работу.
'[[: blank:]]' не является символьным классом, который понимается 'sed'. – hek2mgl
Неправильно, я тестировал его с OSX 'sed' и' gnu sed', и это сработало. – anubhava
Тогда это скрытая «функция». После man-страницы это должно быть '[[: space:]]' – hek2mgl