просмотреть конкретную строку файла, обозначенную числом - PullRequest
19 голосов
/ 24 марта 2011

Хорошо, это, вероятно, очевидная вещь, но она ускользает от меня, так как в ней, вероятно, это можно сделать гораздо проще, чем я пока не осознаю ... Скажем, есть «файл», и я хочу просмотреть только то, что находится в строке «X» этого файла, каково будет решение?

вот что я могу придумать:

head -X < file | tail -1  
 sed -n Xp < file

Есть ли что-нибудь еще (или любой другой способ) из стандартного набора текстовых инструментов / утилит unix / gnu / linux?

Ответы [ 4 ]

32 голосов
/ 24 марта 2011

sed -n 'Xp' theFile, где X - номер вашей строки, а theFile - ваш файл.

6 голосов
/ 22 октября 2011

в vi:

vi +X filename

в EMACS:

emacs +X filename

в оболочке:

nl -ba -nln filename| grep '^X '

вы можете использовать контекстgrep cgrep вместо grep, чтобы увидеть некоторые строки выше и ниже совпадающей строки ..


ПРИМЕРЫ:

вывести только эту строку:

$ nl -ba  -nln  active_record.rb  | grep '^111 '
111       module ConnectionAdapters

с контекстом:

$ nl -ba  -nln  active_record.rb  | grep -C 2 '^111 '
109       end
110     
111       module ConnectionAdapters
112         extend ActiveSupport::Autoload
113     

для управления контекстом в grep check man grep:

   Context Line Control
       -A NUM, --after-context=NUM
              Print NUM lines of trailing context after matching lines.  Places a line containing a group separator (--) between contiguous groups of matches.  With the -o or --only-matching option, this has no effect and a warning is given.

       -B NUM, --before-context=NUM
              Print NUM lines of leading context before matching lines.  Places a line containing a group separator (--) between contiguous groups of matches.  With the -o or --only-matching option, this has no effect and a warning is given.

       -C NUM, -NUM, --context=NUM
              Print NUM lines of output context.  Places a line containing a group separator (--) between contiguous groups of matches.  With the -o or --only-matching option, this has no effect and a warning is given.
3 голосов
/ 24 марта 2011

awk однострочный:

awk "NR==$X" file

петля bash:

for ((i=1; i<=X; i++)); do
  read l
done < file
echo "$l"
2 голосов
/ 29 марта 2011

Просто используйте vi

vi file

Когда в типе файла

:X

, где X - номер строки, которую вы хотите видеть

Однако sed -Файл Xp - хороший способ, если вы действительно хотите видеть только одну строку

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...