7
votes

Prepend du texte dans le fichier

J'ai utilisé une commande AWK pour trouver une ligne particulière dans un fichier et souhaite la compenser dans un deuxième fichier. Quelqu'un peut-il m'aider à cet égard?


1 commentaires

"Ajouter" signifie attacher après. Vous ne pouvez pas "ajouter" quelque chose au début de quelque chose d'autre. Il y a un mot pour cela: " prépendez ".


4 Réponses :


0
votes

Je CAT (1) La ligne dans un fichier factice, chat le deuxième fichier en après, puis écrasez le deuxième fichier avec le mannequin. Recherchez la commande SPONGE (1) , qui vous permet de faire le "naturel" (mais incorrect) awk ... | CAT - Deuxième fichier> Deuxième fichier


1 commentaires

Je veux ajouter la nouvelle ligne à la première ligne existante dans le deuxième fichier



14
votes

La réponse courte est que vous ne pouvez pas. Vous aurez besoin d'un fichier temporaire.

sed -i 's/\(line you want\)/Prefix \1/g' origfile


3 commentaires

Cela ajoute le texte comme première ligne et la première ligne précédente en deuxième ligne, mais je veux en faire une ligne


C'est un peu plus facile alors. Édité.


+1 Aussi: SED -I '/ Ligne que vous souhaitez / S / ^ / PREFIX / G' D'ORIGFILE ou SED -I '1S / ^ / PREFIX / G' MIEL (Ce dernier est basé sur la réponse de soi de l'OP)



0
votes
awk '{if(NR==1){print "text" $0}else{print }}' O/Pfile temp 
mv temp O/Pfile

1 commentaires

Plus court: awk 'nr == 1 {imprimé "texte" $ 0}' O / Pfile> TEMP; MV TEMP O / PFILE



1
votes

Différentes façons de préparer une ligne:

cat file_to_prepend file|sponge file
{ rm file;cat file_to_prepend ->file; }<file
sed -i '1{h;s/.*/cat file_to_prepend/ep;g}' file # GNU
printf %s\\n '0r file_to_prepend' w|ed -s file
sed -i -e 1rfile_to_prepend -e '1{h;d}' -e '2{x;G}' file


0 commentaires