Подтвердить что ты не робот

Просмотреть определенную строку файла, обозначенного номером

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

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

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

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

4b9b3361

Ответ 1

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

Ответ 2

в 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 проверить 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

awk one-liner:

awk "NR==$X" file

bash loop:

for ((i=1; i<=X; i++)); do
  read l
done < file
echo "$l"

Ответ 4

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

vi file

Если в типе файла

:X

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

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