2013-08-22 3 views
0

У меня есть несколько строк, и мне нужно выбрать один из них, я нашел нужные строки, используя grep, , но теперь мне нужна только первая строка из результата , Как я могу сделать это с помощью, grep, awk, sed и т.д ..Используйте ' n' в качестве разделителя полей в awk-команде

This is first line. 
This is second line. 
This is seventh line. 

Использование Grep я получил о/р Grep "Это s" file.txt.

This is second line. 
This is seventh line. 

Теперь мне нужна первая строка. Как можно использовать '\n' в качестве разделителя полей.

+0

Вам не нужны grep и awk. Все, что вы делаете, может быть сделано полностью в awk. Обратите внимание, что ваш вопрос и ответ, который вы приняли, абсолютно не связаны с полями, разделенными '\ n', поэтому ваша строка темы вводит в заблуждение. –

ответ

1

Распечатать первая линия, которая соответствует This is s и выйти с awk:

$ awk '/This is s/{print $0; exit}' 
This is second line. 

Однако GNU grep имеет -m вариант, который останавливается в заданное число совпадений:

$ grep -Fm 1 'This is s' file 
This is second line. 

Примечание: -F является для фиксированного соответствия строк вместо регулярных выражений.

И для полноты картины с sed вы могли бы сделать:

$ sed '/This is s/!d;q' file 
This is second line. 

Однако пример кажется немного странным, как вы могли бы просто сделать grep 'second' file.

+0

У меня получилось, что я могу это сделать, Но на самом деле мой запрос заключается в том, есть ли способ, токенизировать линии, используя awk, sed или grep. Теперь мы знаем, что есть строка типа «Это s», но что, если я не знаю, и мне нужна первая строка. – 51k

+0

Все 3 примера находят первое совпадение только по заданному шаблону. 'awk' по умолчанию делит записи по символам новой строки. Насколько я могу судить, я отвечаю на вопрос, если это не так, отредактируйте вопрос, чтобы понять, что вы хотите, с примером ввода и ожиданием вывода. –

+0

Спасибо, sudo, :) Это был просто пример, который я создал, чтобы объяснить свою проблему. И я думаю, что я не смог правильно объяснить проблему. Не могли бы вы рассказать, как я могу получить вторую строчку? Если я не знаю содержание этих строк. Потому что я попробовал, но не смог его получить. – 51k

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