Uitvoer toevoegen aan het einde van een tekstbestand

Hoe voeg ik de uitvoer van een opdracht toe aan het einde van een tekstbestand?


Antwoord 1, autoriteit 100%

Gebruik >>in plaats van >wanneer u de uitvoer naar een bestand stuurt:

your_command >> file_to_append_to

Als file_to_append_toniet bestaat, wordt deze aangemaakt.

Voorbeeld:

$ echo "hello" > file
$ echo "world" >> file
$ cat file 
hello
world

Antwoord 2, autoriteit 18%

Om een bestand appendgebruikt u >>

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

dan moet de uitvoer zijn

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

Om een bestand te overwritegebruik >

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

dan is de uitvoer

hello tom


Antwoord 3, autoriteit 10%

U kunt de >> exploitant. Hiermee worden gegevens van een opdracht aan het einde van een tekstbestand toegevoegd.

Probeer dit uit te voeren:

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

Doe dit een paar keer en voer dan uit:

cat textfile.txt

Je zult zien dat je tekst meerdere keren is toegevoegd aan het bestand textfile.txt.


Antwoord 4, autoriteit 7%

Gebruik command >> file_to_append_toom aan een bestand toe te voegen.

Bijvoorbeeld echo "Hello" >> testFile.txt

LET OP:als u slechts één >gebruikt, overschrijft u de inhoud van het bestand. Om ervoor te zorgen dat dit nooit gebeurt, kun je set -o noclobbertoevoegen aan je .bashrc.

Dit zorgt ervoor dat als u per ongeluk command > file_to_append_totoevoegen aan een bestaand bestand, zal het u waarschuwen dat het bestand al bestaat. Voorbeeldfoutbericht: file exists: testFile.txt

Dus als je >gebruikt, kun je alleen een nieuw bestand maken, niet een bestaand bestand overschrijven.


Antwoord 5, autoriteit 5%

Met teemet optie -a (–append)kun je aan meerdere bestanden tegelijk toevoegen en ook sudo(erg handig bij het toevoegen aan beveiligde bestanden). Daarnaast is het interessant als je naast bash ook andere shells moet gebruiken, aangezien niet alle shells de > en >> operators

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

Deze threadheeft goede antwoorden over tee


Antwoord 6, autoriteit 3%

Gebruik de operator >>om tekst aan een bestand toe te voegen.


Antwoord 7, autoriteit 2%

voor de hele vraag:

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

hiermee worden 720 regels (30*24) toegevoegd aan o.txt en daarna wordt het bestand hernoemd op basis van de huidige datum.

Voer het bovenstaande elk uur uit met de cron, of

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

Antwoord 8, autoriteit 2%

Ik zou printf gebruiken in plaats van echo omdat het betrouwbaarder isen verwerkt opmaak zoals nieuwe regel \ncorrect.

Dit voorbeeld produceert een uitvoer vergelijkbaar met echo in eerdere voorbeelden:

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

Als u echter in dit voorbeeld printf zou vervangen door echo, zou echo \n behandelen als een tekenreeks, waardoor de bedoeling wordt genegeerd

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

Antwoord 9

Ik verwar die twee vaak. Beter te onthouden via hun output:

> voor overschrijven

$ touch someFile.txt
$ echo ">" > someFile.txt
$ cat someFile.txt
  >
$ echo ">" > someFile.txt
$ cat someFile.txt
  >

>> voor toevoegen

$ echo ">" > someFile.txt
$ cat someFile.txt
  >
$ echo ">" >> someFile.txt
$ cat someFile.txt
  >>

Antwoord 10

Ik stel voor dat je twee dingen doet:

  1. Gebruik >>in je shellscript om inhoud aan een bepaald bestand toe te voegen. De bestandsnaam kan worden aangepast of door een patroon te gebruiken.
  2. Stel een cronjob per uur in om het shellscript te activeren

Antwoord 11

Uw bestand bevat bijvoorbeeld:

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

als u aan het einde van het bestand wilt toevoegen, —->onthoud de spaties tussen ‘text’ >> ‘bestandsnaam’

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

En om de inhoud van het bestand te overschrijven:

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

Antwoord 12

Hoewel al deze antwoorden technisch correct zijn, is het toevoegen aan een bestand met >>over het algemeen de beste keuze. Houd er rekening mee dat als u dit in een lus gebruikt, bijvoorbeeld bij het parseren/verwerken een bestand en voeg elke regel toe aan het resulterende bestand, dit kan veel langzamer zijn dan je zou verwachten.

Een sneller alternatief zou dit kunnen zijn:

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

WAARSCHUWING: u leest alle regels in het geheugen; geheugen is een beperkte bron, dus doe dit niet voor gigantische bestanden.

Other episodes