{ cat file; echo 'END OF FILE'; } > newFile , cela fonctionne aussi grâce à sh. *. (pas sed mais fonctionne et simple)
4
un simple echo "Cool Text" >> filedevrait aussi faire l'affaire.
Danpe
Réponses:
95
sed -e "\$aTEXTTOEND" est le moyen le plus simple.
Comment ça fonctionne
$correspond à la dernière ligne (c'est une sedadresse normale ; 4aTEXTTOENDinsérerait après la quatrième ligne), acorrespond à la commande append et à TEXTTOENDce qu'il faut ajouter.
Pour OS X sed -e '$a\NEWLINE\\'. Remplacez NEWLINE par une nouvelle ligne réelle.
Jorge Bucaran
15
sed -i -e "\ $ aTEXTTOEND" <nom_fichier> serait la commande complète.
Lasse Meyer
2
ne fonctionne pas sur macos. Même pas Jorge Bucaran commentaire: sed: 1: "$ a \ NEWLINE \\": caractères supplémentaires après \ à la fin d'une commande
Emanuele Paolini
1
Dans debian 9, il ajoute une nouvelle ligne au lieu d’ajouter à la fin de la dernière ligne.
Luciano Andress Martini
31
Pas besoin d'utiliser seddans ce cas. Que diriez-vous
C'est assez vrai, mais vous pouvez deviner que le cas d'utilisation de l'OP est de mettre " <php " et " >" entre crochets le fichier , et de citer le contenu sélectionné en une fois, donc il veut probablement vraiment un sedfragment.
dmckee
2
Aussi, si vous faites cela et que vous ne voulez pas de nouvelle ligne, utilisez echo -n
Vinko Vrsalovic le
2
Je n'aime pas deviner. Chaque fois que j'essaye, je me trompe.
4
Une autre raison pour laquelle la réponse acceptée est plus utile est dans le cas de l'ajout de préfixe avec sudo, ce qui provoque l'échec de cette variation puisqu'il echos'agit d'une commande intégrée dans le shell plutôt que d'un fichier exécutable trouvé dans$PATH
Tony Cesaro -
@TonyCesaro: echoest un fichier intégré, mais aussi un fichier exécutable se trouvant dans$PATH
Zan Lynx
24
En supposant que vous vouliez mettre la balise php de fin dans les fichiers, puis
De manière simple, écrivez et modifiez le contenu d’une ligne spécifique dans un fichier. Si vous souhaitez insérer quelque chose à un numéro de ligne spécifique, vous pouvez utiliser la commande ci-dessous:
sed -i '2i i have started' sheikh.log
où 2i- numéro de ligne 2 et i signifie insertion. Si vous devez insérer à la dernière ligne, utilisez $plutôt 2. J'ai commencé - texte à insérer et sheikh.logest le nom du fichier.
Nous pouvons également faire les changements dans la ligne en utilisant la commande ci-dessous
Je suppose que quiconque a cherché comment insérer / ajouter du texte au début / à la fin d'un fichier doit probablement aussi savoir comment faire l'autre.
Cette calsortie est dirigée vers gnu sed(appelée gsedsur macOS installé via brew.sh ) avec RegEx ( -E) étendu et 6 "scripts" appliqués ( -e) et les sauts de ligne avec échappée \pour plus de lisibilité. Les scripts 1 et 2 utilisent 1i\"à la ligne 1, insérer". Les scripts 5 et 6 utilisent $a\"à la ligne <dernière>, ajoutez". J'ai aligné verticalement les sorties de texte pour que le code représente ce que l'on attend du résultat. Les scripts 3 et 4 font des substitutions (la dernière ne s’appliquant qu'à "ligne <dernier>"). Le résultat est la conversion de la sortie de la commande en JSON valide.
Bien que je n’aie pas voté sur votre question, notez que nous avons déjà plusieurs réponses, y compris une réponse acceptée, qui démontrent le résultat souhaité.
Jeff Schaller
@JeffSchaller La communauté Stack Exchange n'est pas un forum. Son objectif ne se limite pas à aider le PO à se débloquer. L’objectif est de doter la base de connaissances mondiale de nombreuses options sur lesquelles les chercheurs peuvent trébucher lorsqu’ils cherchent des réponses. La raison pour laquelle j'ai intitulé ma réponse est d'aider les utilisateurs à reconnaître l'utilité de cette réponse avant même de cliquer sur le résultat de Google.
{ cat file; echo 'END OF FILE'; } > newFile
, cela fonctionne aussi grâce à sh. *. (pas sed mais fonctionne et simple)echo "Cool Text" >> file
devrait aussi faire l'affaire.Réponses:
sed -e "\$aTEXTTOEND"
est le moyen le plus simple.Comment ça fonctionne
$
correspond à la dernière ligne (c'est unesed
adresse normale ;4aTEXTTOEND
insérerait après la quatrième ligne),a
correspond à la commande append et àTEXTTOEND
ce qu'il faut ajouter.la source
sed -e '$a\NEWLINE\\'
. Remplacez NEWLINE par une nouvelle ligne réelle.Pas besoin d'utiliser
sed
dans ce cas. Que diriez-vousla source
<php
" et ">
" entre crochets le fichier , et de citer le contenu sélectionné en une fois, donc il veut probablement vraiment unsed
fragment.sudo
, ce qui provoque l'échec de cette variation puisqu'ilecho
s'agit d'une commande intégrée dans le shell plutôt que d'un fichier exécutable trouvé dans$PATH
echo
est un fichier intégré, mais aussi un fichier exécutable se trouvant dans$PATH
En supposant que vous vouliez mettre la balise php de fin dans les fichiers, puis
devrait faire l'affaire
la source
Voir votre message original pour la commande tout en un sed.
la source
Utilisez la commande sed 'append (a)'. Par exemple, pour ajouter deux lignes à la fin du fichier:
la source
De manière simple, écrivez et modifiez le contenu d’une ligne spécifique dans un fichier. Si vous souhaitez insérer quelque chose à un numéro de ligne spécifique, vous pouvez utiliser la commande ci-dessous:
où
2i
- numéro de ligne 2 et i signifie insertion. Si vous devez insérer à la dernière ligne, utilisez$
plutôt 2. J'ai commencé - texte à insérer etsheikh.log
est le nom du fichier.Nous pouvons également faire les changements dans la ligne en utilisant la commande ci-dessous
i
est changé enwe
.la source
Premier et dernier
Je suppose que quiconque a cherché comment insérer / ajouter du texte au début / à la fin d'un fichier doit probablement aussi savoir comment faire l'autre.
Explication
Cette
cal
sortie est dirigée vers gnused
(appeléegsed
sur macOS installé via brew.sh ) avec RegEx (-E
) étendu et 6 "scripts" appliqués (-e
) et les sauts de ligne avec échappée\
pour plus de lisibilité. Les scripts 1 et 2 utilisent1i\
"à la ligne 1, insérer". Les scripts 5 et 6 utilisent$a\
"à la ligne <dernière>, ajoutez". J'ai aligné verticalement les sorties de texte pour que le code représente ce que l'on attend du résultat. Les scripts 3 et 4 font des substitutions (la dernière ne s’appliquant qu'à "ligne <dernier>"). Le résultat est la conversion de la sortie de la commande en JSON valide.sortie
la source