Я собираю сед.У меня проблемы с пониманием того, как работает адрес строки в sed, когда для указания адреса строки используется шаблон.
У меня есть образец текстового файла с именем emp.lst
со следующим содержимым:
2233|a.k. shukla |g.m. |sales |12/12/52|6000
9876|jai sharma |director |production|12/03/50|7000
5678|sumit chakrobarty|d.g.m. |marketing |19/04/43|6000
2365|barun sengupta |director |personnel |11/05/47|7800
5423|n.k. gupta |chairman |admin |30/08/56|5400
1006|chanchal singhvi |director |sales |03/09/38|6700
6213|karuna ganguly |g.m. |accounts |05/06/62|6300
1265|s.n. dasgupta |manager |sales |12/09/63|5600
4290|jayant Choudhury |executive|production|07/09/50|6000
2476|anil aggarwal |manager |sales |01/05/59|5000
6521|lalit chowdury |director |marketing |26/09/45|8200
3212|shyam saksena |d.g.m. |accounts |12/12/55|6000
3564|sudhir Agarwal |executive|personnel |06/07/47|7500
2345|j.b. saxena |g.m. |marketing |12/03/45|8000
0110|v.k. agrawal |g.m. |marketing |31/12/40|9000
Как я понимаю, адрес строки может быть указан либо в виде номера строки шаблона, чтобы соответствовать тексту или регулярному выражению.
Я понимаю, как sed -n '1p' emp.lst
и sed -n '1,2p' emp.lst
выводят на печатьСтрока 1 и строка 1 и 2 соответственно без повторения всех строк (-n
).
Я также понимаю и ценю, как sed -n '/director/p' emp.lst
соответствует всем строкам, содержащим строку director
, и выводит:
9876|jai sharma |director |production|12/03/50|7000
2365|barun sengupta |director |personnel |11/05/47|7800
1006|chanchal singhvi |director |sales |03/09/38|6700
6521|lalit chowdury |director |marketing |26/09/45|8200
Теперь, когда я указываю несколько скороговорок как sed -n '/director/,/executive/p' emp.lst
, показывается вывод:
9876|jai sharma |director |production|12/03/50|7000
5678|sumit chakrobarty|d.g.m. |marketing |19/04/43|6000
2365|barun sengupta |director |personnel |11/05/47|7800
5423|n.k. gupta |chairman |admin |30/08/56|5400
1006|chanchal singhvi |director |sales |03/09/38|6700
6213|karuna ganguly |g.m. |accounts |05/06/62|6300
1265|s.n. dasgupta |manager |sales |12/09/63|5600
4290|jayant Choudhury |executive|production|07/09/50|6000
6521|lalit chowdury |director |marketing |26/09/45|8200
3212|shyam saksena |d.g.m. |accounts |12/12/55|6000
3564|sudhir Agarwal |executive|personnel |06/07/47|7500
Что означает этот вывод?
Это все строки, содержащие шаблон director
и executive
?Ясно, что нет, поскольку есть строки, не содержащие ни одного из шаблонов.
Все ли строки начинаются с того, что первая соответствует одному из шаблонов, а последняя соответствует одному изшаблоны?Нет, опять же, как если бы я придерживался этой логики, одна строка (2476|anil aggarwal |manager |sales |01/05/59|5000
) отсутствует в выводе.
Я не смог четко определить, как команда sed -n '/director/,/executive/p' emp.lst
работает?Я просмотрел man-страницу sed и не смог сделать вывод.
Как мне подойти к пониманию работы?
Для контекста я запускаю команду sed
, встроенную в macOS HighSierra 10.13.6 работает в Bash версии 4.4.
Примечание : я sed
новичок.Пожалуйста, исправьте любую ошибку или неправильную терминологию, которую я мог использовать.