Как добавить вывод в конец текстового файла - PullRequest
370 голосов
/ 02 июня 2011

Как добавить вывод команды в конец текстового файла?

Ответы [ 10 ]

538 голосов
/ 02 июня 2011

Используйте >> вместо > при направлении вывода в файл:

your_command >> file_to_append_to

Если file_to_append_to не существует, он будет создан.

Пример:

$ echo "hello" > file
$ echo "world" >> file
$ cat file 
hello
world
68 голосов
/ 02 июня 2011

Вы можете использовать оператор >>.Это добавит данные из команды в конец текстового файла.

Чтобы проверить это, попробуйте выполнить:

echo "Hi this is a test" >> textfile.txt

Сделайте это пару раз, а затем выполните:

cat textfile.txt

Вы увидите, что ваш текст был добавлен несколько раз в файл textfile.txt.

57 голосов
/ 30 апреля 2018

К append использование файла >>

echo "hello world"  >> read.txt   
cat read.txt     
echo "hello siva" >> read.txt   
cat read.txt

тогда вывод должен быть

hello world   # from 1st echo command
hello world   # from 2nd echo command
hello siva

Для overwrite использования файла >

echo "hello tom" > read.txt
cat read.txt  

тогда выход будет

hello tom

28 голосов
/ 21 октября 2017

Используйте command >> file_to_append_to для добавления в файл.

Например echo "Hello" >> testFile.txt

ВНИМАНИЕ: если вы используете только один >, вы полностью перезапишите содержимое файла. Чтобы этого никогда не происходило, вы можете добавить set -o noclobber к вашему .bashrc.

Это гарантирует, что если вы случайно наберете command > file_to_append_to для существующего файла, он предупредит вас, что файл уже существует. Пример сообщения об ошибке: file exists: testFile.txt

Таким образом, когда вы используете >, это позволит вам только создать новый файл, а не перезаписать существующий файл.

20 голосов
/ 02 июня 2011

Используйте оператор >> для добавления текста в файл.

13 голосов
/ 02 июня 2011

на весь вопрос:

cmd >> o.txt && [[ $(wc -l <o.txt) -eq 720 ]] && mv o.txt $(date +%F).o.txt

это добавит 720 строк (30 * 24) в o.txt, а после переименует файл на основе текущей даты.

Запускайте вышеизложенное с помощью cron каждый час, или

while :
do
    cmd >> o.txt && [[ $(wc -l <o.txt) -eq 720 ]] && mv o.txt $(date +%F).o.txt
    sleep 3600
done
7 голосов
/ 15 января 2015

Например, ваш файл содержит:

 1.  mangesh@001:~$ cat output.txt
    1
    2
    EOF

если вы хотите добавить в конец файла, тогда ----> запомните пробелы между 'text' >> 'filename'

  2. mangesh@001:~$ echo somthing to append >> output.txt|cat output.txt 
    1
    2
    EOF
    somthing to append

и перезаписать содержимое файла:

  3.  mangesh@001:~$ echo 'somthing new to write' > output.tx|cat output.tx
    somthing new to write
7 голосов
/ 11 сентября 2014

Я бы посоветовал вам сделать две вещи:

  1. Используйте >> в вашем сценарии оболочки для добавления содержимого в определенный файл.Имя файла может быть фиксированным или с использованием некоторого шаблона.
  2. Настройка почасового выполнения cronjob для запуска сценария оболочки
4 голосов
/ 07 июня 2019

Я бы использовал printf вместо echo, потому что он более надежен и обрабатывает форматирование, такое как новая строка \n, правильно.

В этом примере выводится аналогично эхо в предыдущих примерах:

printf "hello world"  >> read.txt   
cat read.txt
hello world

Однако если в этом примере заменить printf на echo, echo будет рассматривать \ n как строку, игнорируя при этом намерение

printf "hello\nworld"  >> read.txt   
cat read.txt
hello
world
1 голос
/ 12 июля 2019

Использование тройник с опцией -a (--append) позволяет добавлять несколько файлов одновременно, а также использовать sudo (очень полезно при добавлении к защищенным файлам).Кроме того, интересно, если вам нужно использовать другие оболочки, кроме bash, так как не все оболочки поддерживают операторы> и >>

echo "hello world" | sudo tee -a output.txt

Этот поток имеет хорошие ответы о tee

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