如何将命令的输出附加到文本文件的末尾?
当将输出指向文件时,使用>>而不是>:
>>
>
your_command >> file_to_append_to
如果file_to_append_to不存在,将创建它。
file_to_append_to
例子:
$ echo "hello" > file $ echo "world" >> file $ cat file hello world
使用>>操作符将文本附加到文件中。
您可以使用>>操作符。这将把命令中的数据附加到文本文件的末尾。
要测试这个,请运行:
echo "Hi this is a test" >> textfile.txt
这样做几次,然后运行:
cat textfile.txt
您将看到文本被多次追加到textfile.txt文件。
对于整个问题:
cmd >> o.txt && [[ $(wc -l <o.txt) -eq 720 ]] && mv o.txt $(date +%F).o.txt
这将在o.txt中追加720行(30*24),之后将根据当前日期重命名文件。
每小时用cron运行上面的程序,或者
while : do cmd >> o.txt && [[ $(wc -l <o.txt) -eq 720 ]] && mv o.txt $(date +%F).o.txt sleep 3600 done
我建议你做两件事:
例如,您的文件包含:
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
使用command >> file_to_append_to附加到文件中。
command >> file_to_append_to
例如echo "Hello" >> testFile.txt
echo "Hello" >> testFile.txt
警告:如果你只使用一个>,你会覆盖文件的内容。为了确保不会发生这种情况,您可以将set -o noclobber添加到.bashrc中。
set -o noclobber
.bashrc
这确保了如果您不小心在现有文件中键入command > file_to_append_to,它将提醒您该文件已经存在。示例错误消息:file exists: testFile.txt
command > file_to_append_to
file exists: testFile.txt
因此,当您使用>时,它只允许您创建一个新文件,而不能覆盖现有文件。
append文件使用>>
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文件使用>
overwrite
echo "hello tom" > read.txt cat read.txt
那么输出是
# EYZ0
我将使用printf而不是echo,因为它是更可靠的,并正确地处理格式,如新行\n。
\n
这个例子产生一个类似于前面例子中的echo的输出:
printf "hello world" >> read.txt cat read.txt hello world
然而,如果你在这个例子中用echo替换printf, echo会把\n当作一个字符串,从而忽略意图
printf "hello\nworld" >> read.txt cat read.txt hello world
使用< em > t < / em >和选项——(附加)允许您一次追加到多个文件,也可以使用sudo(在追加到受保护的文件时非常有用)。除此之外,如果您需要使用bash之外的其他shell,这很有趣,因为并非所有shell都支持>和>>操作符
echo "hello world" | sudo tee -a output.txt
这个线程有关于tee的很好的答案
我经常把两者混淆。最好通过它们的输出来记住:
$ touch someFile.txt $ echo ">" > someFile.txt $ cat someFile.txt > $ echo ">" > someFile.txt $ cat someFile.txt >
$ echo ">" > someFile.txt $ cat someFile.txt > $ echo ">" >> someFile.txt $ cat someFile.txt >>
虽然所有这些答案在技术上都是正确的,使用>>追加到文件通常是正确的方法,但请注意,如果在例如解析/处理文件时在循环中使用此方法,并将每行追加到结果文件中,这可能比您预期的要慢得多。
一个更快的选择可能是:
stringBuilder="" while read -r line; do # $'\n' prints a newline so we don't have to know what special chars the string contains stringBuilder+="$line"$'\n' done < "myFile.txt" echo "$stringBuilder" > $file
警告:您正在将所有行读入内存;内存是一种有限的资源,所以不要对巨大的文件这样做。
在Linux操作系统中,可以使用cat命令将文件内容追加到另一个文件
cat
在前面的命令中,您将添加fileName_1.txt的内容到fileName_2.txt。
fileName_1.txt
fileName_2.txt
在Windows操作系统中可以使用type命令
type
请看这张gif图片: