Как скопировать первые несколько строк гигантского файла и добавить строку текста в его конец с помощью некоторых команд Linux?

89

Как скопировать первые несколько строк гигантского файла и добавить в конец строку текста с помощью некоторых команд Linux?

бизнес
источник
1
In bashhead -n 100 yourfile.csv > shrunkfile.csv && echo 'morelines' >> shrunkfile.csv
Эрик Лещински

Ответы:

147

Команда headможет получить первые nстроки. Варианты:

head -7 file
head -n 7 file
head -7l file

который получит первые 7 строк файла с именем "file". Используемая команда зависит от вашей версии head. Linux будет работать с первым.

Чтобы добавить строки в конец того же файла, используйте:

echo 'first line to add' >>file
echo 'second line to add' >>file
echo 'third line to add' >>file

или:

echo 'first line to add
second line to add
third line to add' >>file

сделать это одним ударом.

Итак, связав эти две идеи вместе, если вы хотите получить первые 10 строк input.txtфайла output.txtи добавить строку из пяти "="символов, вы можете использовать что-то вроде:

( head -10 input.txt ; echo '=====' ) > output.txt

В этом случае мы выполняем обе операции в суб-оболочке, чтобы объединить выходные потоки в один, который затем используется для создания или перезаписи выходного файла.

Paxdiablo
источник
21

Я предполагаю, что вы пытаетесь вставить строку после первых нескольких строк текстового файла.

head -n10 file.txt >> newfile.txt
echo "your line >> newfile.txt
tail -n +10 file.txt >> newfile.txt

Если вы не хотите, чтобы остальные строки из файла, просто пропустите хвостовую часть.

DJ.
источник
3
Подоболочки позволяют делать это без повторного открытия выходного файла:(head -n10 file.txt ; echo "Some stuff" ; tail -n +10 file.txt) > newfile.txt
hobbs,
5

Первые несколько строк: man head.

Добавить строки: используйте >>оператор (?) В Bash:

echo 'This goes at the end of the file' >> file
странник
источник