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_to
niet bestaat, wordt deze aangemaakt.
Voorbeeld:
$ echo "hello" > file
$ echo "world" >> file
$ cat file
hello
world
Antwoord 2, autoriteit 18%
Om een bestand append
gebruikt 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 overwrite
gebruik >
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_to
om 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 noclobber
toevoegen aan je .bashrc
.
Dit zorgt ervoor dat als u per ongeluk command > file_to_append_to
toevoegen 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 \n
correct.
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:
- Gebruik
>>
in je shellscript om inhoud aan een bepaald bestand toe te voegen. De bestandsnaam kan worden aangepast of door een patroon te gebruiken. - 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.