2016-01-06 2 views
0

Мне нужно сделать команду (так что нет скрипта) в linux, которая показывает только 1 часть файла .txt. Я уже искал man-страницы grep и sed, но они анализируют только одну строку за раз (если я не ошибаюсь), так что это не то, что я хочу.Анализ нескольких строк в linux

Начало и конец части файла я должен показать, помечены как это:

*** START OF... *** 
... 
*** END OF... *** 

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

+0

Что значит «сделать команду (так нет сценария)»? И почему вы не можете использовать скрипт? Это какое-то домашнее задание? Вы можете использовать 'awk', который снова идет по строкам, но вы можете отслеживать содержимое и только начинать работу с вводом, как только вы достигнете триггера' *** START OF ... *** 'line. –

+0

Это просто упражнение, которое я делаю, и в нем говорится, что вы должны использовать команды (мы не видели скриптов, когда мы получили это упражнение). Мы никогда не видели, как работает awk, поэтому он должен идти без awk, может быть, что на самом экзамене они говорят, что вы не можете использовать awk ... – micro

ответ

1
$ sed -ne '/START OF/,/END OF/p' << EOF 
> 2 3 5 
> 3 4 7 
> *** START OF ... *** 
> 1 2 3 
> 2 3 5 
> 3 4 7 
> 4 5 9 
> *** END OF ... *** 
> 2 3 5 
> 3 4 7 
> EOF 
*** START OF ... *** 
1 2 3 
2 3 5 
3 4 7 
4 5 9 
*** END OF ... *** 

EOF находится здесь doc, см. wikipedia для получения дополнительной информации. -e указывают, что следующий аргумент будет рассматриваться как команда, отличная от имени файла.

+0

Спасибо, это сработало. Но можете ли вы немного объяснить? Я понимаю все, кроме части EOF (или это просто имя файла), и почему вам нужен флаг -e. Я теперь это как-то связано со сценарием, но я этого не понимаю. – micro

+0

@micro Проверьте это: http://www.tldp.org/LDP/abs/html/here-docs.html – hek2mgl

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