web-dev-qa-db-fra.com

Ajouter du texte au fichier à partir de la ligne de commande sans utiliser la redirection io

Comment pouvons-nous ajouter du texte dans un fichier via une commande d'une ligne sans utiliser la redirection io?

55
apoorv020

Si cela ne vous dérange pas d'utiliser sed alors,

 $ test cat 
 il s’agit de la ligne 1 
 $ sed -i '$ a\ceci est la ligne 2 sans test de redirection' 
 $ test cat. 
 ceci est la ligne 1 
 ceci est la ligne 2 sans redirection 

Comme la documentation peut être un peu longue à parcourir, quelques explications:

  • -i signifie une transformation in-situ, ainsi tous les changements se produiront dans le fichier que vous spécifiez
  • $ est utilisé pour spécifier la dernière ligne
  • a signifie ajouter une ligne après
  • \ est simplement utilisé comme délimiteur
61
taskinoor

Si vous voulez juste taper quelque chose à la main, la réponse sed fonctionnera pour vous. Si au lieu de cela le texte est dans fichier (s) (par exemple, fichier1.txt et fichier2.txt):

Utiliser Perl:

Perl -e 'open(OUT, ">>", "outfile.txt"); print OUT while (<>);' file*.txt

N.B. tandis que le >> peut ressembler à une indication de redirection, il s’agit simplement du mode d’ouverture de fichier, dans ce cas "append".

5
Joel Berger

Vous pouvez utiliser Vim en mode Ex:

ex -sc 'a|BRAVO' -cx file
  1. a ajouter du texte

  2. x enregistrer et fermer

2
Steven Penny

Vous pouvez utiliser le --append caractéristique de tee:

cat file01.txt | tee --append bothFiles.txt 
cat file02.txt | tee --append bothFiles.txt 

Ou plus court,

cat file01.txt file02.txt | tee --append bothFiles.txt 

Je suppose que la demande de non-redirection (>>) provient de la nécessité de l'utiliser dans xargs ou similaire. Donc, si cela ne compte pas, vous pouvez couper la sortie avec >/dev/null.

1
Ondra Žižka