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


当前回答

虽然所有这些答案在技术上都是正确的,但通常情况下,使用>>追加到文件中是正确的方法,但请注意,如果在例如解析/处理文件时在循环中使用此方法,并将每行追加到结果文件中,则这可能比您预期的要慢得多。

一个更快的选择可能是:

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

警告:您正在将所有行读入内存;内存是一种有限的资源,所以不要对巨大的文件这样做。

其他回答

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

要测试这个,请运行:

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

这样做几次,然后运行:

cat textfile.txt

您将看到文本被多次追加到textfile.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

警告:您正在将所有行读入内存;内存是一种有限的资源,所以不要对巨大的文件这样做。

使用>>操作符将文本附加到文件中。

要追加一个文件,请使用>>

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

要覆盖文件,请使用>

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

那么输出是

你好,汤姆

例如,你的文件包含:

 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