В этой статье я покажу вам несколько советов, как получить n-ю строку из файла с помощью командной строки.
Исходная статья: https://blog.petehouston.com/get-n-th-line-from-a-file/
Вместо того, чтобы использовать раздутый текстовый редактор только для чтения одной строки из файла, использование команды для запроса того, что мы хотим, является лучшим выбором.
Предполагая, что вход имеет следующее содержимое:
id,title,author,created_at
1,"Backup and restore MySQLDB","Pete Houston","2018-08-27 12:15:32"
2,"Quick guide to SQLite3","Pete Houston","2018-09-12 22:35:56"
3,"Migrate to MongoDB","Pete Houston","2018-10-01 03:48:18"
Это файл CSV, но вы можете использовать любой файл.
Допустим, мы хотим получить 2-ю строку из этого sample.csv
. Каково ваше решение?
Вот несколько полезных команд.
1. Объединение head
и tail
Это может быть первое, что приходит на ум, когда нам нужно иметь дело со строками из файла.
$ head -n2 sample.csv | tail -1
1,"Backup and restore MySQLDB","Pete Houston","2018-08-27 12:15:32"
Что он делает, так это захватывает первые 2 строки, а затем получает последнюю строку.
2. Использование sed
sed
— очень мощная утилита, и вот как мы ее используем.
$ sed '2q;d' sample.csv
1,"Backup and restore MySQLDB","Pete Houston","2018-08-27 12:15:32"
Это выглядит довольно сложно понять, если вы никогда раньше не использовали sed
.
По сути, sed
будет перебирать каждую строку и удалять ее в выводе, но немедленно остановится, когда достигнет 2-й строки.
Nq:
означает остановку немедленно при достижении N-й строки.
d
: означает удаление текущей строки.
Итак, sed '12q;d' input_file
выведет 12-ю строку из input_file
.
3. Еще head
и tail
Это довольно интересно.
$ tail -n+2 sample.csv | head -1
1,"Backup and restore MySQLDB","Pete Houston","2018-08-27 12:15:32"
Это не tail -n2
, а tail -n+2
.
Опция -n+NUM
означает получение строк, начиная с NUM
-й строки из файла. Следовательно, мы можем использовать head
для получения первой отображаемой строки.
Некоторые говорят, что эта команда работает быстрее, чем другие. Но это выглядит в зависимости от реализации tail
.
Вывод
Существует множество способов получить n-ю строку из файла, это зависит от того, что мы знаем. Это довольно интересный вопрос, который многие задают в Интернете.
Этот пост полностью вдохновлен этот вопрос на StackOverflow.
Здравствуйте, я инженер-программист, следите за моим ежедневным блогом по адресу https://blog.peteouston.com