关于bash:如何将输出附加到文本文件的末尾

How to append output to the end of a text file

如何将命令的输出附加到文本文件的末尾?


将输出定向到文件时,使用>>而不是>

1
your_command >> file_to_append_to

如果file_to_append_to不存在,将创建它。

例子:

1
2
3
4
5
$ echo"hello"> file
$ echo"world">> file
$ cat file
hello
world


您可以使用>>运算符。这将把命令中的数据附加到文本文件的末尾。

要测试此,请尝试运行:

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

这样做几次,然后运行:

1
cat textfile.txt

您将看到您的文本已被附加到text file.txt文件中多次。


append文件使用>>

1
2
3
4
echo"hello world"  >> read.txt  
cat read.txt    
echo"hello siva">> read.txt  
cat read.txt

then the output should be

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

overwrite使用>的文件

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

then the out put is

hello tom


使用command >> file_to_append_to附加到文件。

例如echo"Hello">> testFile.txt

注意:如果只使用单个>,则会完全覆盖文件的内容。为了确保不会发生这种情况,您可以将set -o noclobber添加到.bashrc中。

这样可以确保,如果您不小心在现有文件中键入command > file_to_append_to,它将警告您该文件已经存在。示例错误消息:file exists: testFile.txt

因此,当您使用>时,它只允许您创建新文件,而不覆盖现有文件。


使用>>运算符将文本追加到文件中。


对于整个问题:

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

这将在o.txt中附加720行(30*24),之后将根据当前日期重命名文件。

每小时和cron一起运行上面的命令,或者

1
2
3
4
5
while :
do
    cmd >> o.txt && [[ $(wc -l <o.txt) -eq 720 ]] && mv o.txt $(date +%F).o.txt
    sleep 3600
done


例如,您的文件包含:

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

如果要在文件结尾追加,则---->请记住"文本">>"文件名"之间的空格

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

覆盖文件内容:

1
2
  3.  mangesh@001:~$ echo 'somthing new to write' > output.tx|cat output.tx
    somthing new to write


我建议你做两件事:

  • 在shell脚本中使用>>将内容附加到特定文件。文件名可以是固定的,也可以使用某种模式。
  • 设置每小时一次的cronjob以触发shell脚本