Если я использую cat -n text.txt
для автоматической нумерации строк, как я тогда использую команду, чтобы показать только определенные пронумерованные строки.
text-processing
cat
Geckono1
источник
источник
tail
+head
также может сделать это, как можетawk
Ответы:
использование
sed
использование
Чтобы напечатать одну строку (5)
Чтобы напечатать несколько строк (5 и 8)
Для печати определенного диапазона (5 - 8)
Чтобы напечатать диапазон с другой определенной линией (5 - 8 и 10)
источник
Один из способов сделать это с помощью
sed
:где 11 - номер строки, которую вы хотите удалить.
Или удалить все кроме 11
Диапазоны также возможны:
И
cat -n
даже не нужно:источник
Вы можете использовать awk прямо вверх.
заменив '1' на нужный номер строки.
источник
В зависимости от целей мне нравится голова или grep
cat /var/log/syslog -n | head -n 50 | tail -n 10
вернет строки с 41 по 50.
или же
cat /var/log/syslog -n | grep " 50" -b10 -a10
будут показаны строки с 40 по 60. Проблема с методом grep заключается в том, что вы должны использовать учетную запись для заполнения номеров строк (обратите внимание на пробел)
Оба довольно удобны для анализа файлов журнала.
источник
cat
Хотя ни один пример не нуженcat
не может делать то, что хочет ОПКак другие показали вам, нет необходимости использовать
cat -n
. Другие программы сделают это за вас. Однако, если вам действительно нужно проанализировать выводcat -n
и показать только определенные строки (например, 4-8, 12 и 42), вы можете сделать:In
awk
,$1
является первым полем, поэтому эта команда печатает все строки, чьи первые поля: i) от 4 до 8 (включительно) или ii) 12 или iii) 42.Если вы также хотите удалить добавленное поле,
cat -n
чтобы получить исходные строки из файла, вы можете сделать:источник