2016-09-20 2 views
1

я наткнулся на эту команду в проекте, я работаю над:

sed -i '/regex/,$d' file

Я не понимаю, как ,$d часть работ по. Если я опускаю какую-либо часть ,$d, я получаю ошибки. В моих тестах похоже, что он заменяет совпадающую строку и ничего после нее ничем. Пример:

Файл с содержимым:

first line 
second line regex 
third line 
fourth line 

приходит, как после выполнения этой команды:

first line 

Я не мог найти какой-либо документации на странице человека, который объясняет это, хотя я мог бы легко пропустили его. Страница man для меня трудно разобрать ...

Этот пример был протестирован с помощью GNU Sed v 4.2.2.

+0

Ознакомьтесь с http://grymoire.com/Unix/Sed.html для хорошего учебника. Удачи. – shellter

+1

У вас есть непревзойденные кавычки; вводная цитата должна быть отдельной цитатой. (Двойные кавычки не подходят без дополнительного экранирования, без него оболочка будет пытаться расширять '$ d' как переменную, возможно, заменяя ее пустой строкой.) – tripleee

+0

спасибо за указание, что вне, @tripleee - исправлено в примере , – lps

ответ

1

Диапазон адресов определяет линии от первого совпадения регулярных выражений до конца файла ($ в этом контексте указывает последнюю строку), а действие d удаляет указанные строки.

Это не «неясное». Вы найдете его на странице руководства или в любом базовом введении к sed.

+0

Ах, ладно, я вижу. Спасибо за разъяснения. Я смог найти документацию на странице руководства с вашими объяснениями. – lps

+0

Человеческая страница, по общему признанию, жесткая, если это ваша первая экспозиция 'sed'; это ссылка, а не учебник. – tripleee

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