J'essaie d'ajouter et de préfixer du texte à chaque ligne d'un fichier .txt.
Je veux ajouter: I am a
Je veux ajouter: 128... [}
à chaque ligne.
À l'intérieur d'un fichier a.txt:
fruit, like
bike, like
dino, like
Lors de l'exécution de la commande suivante:
$ cat a.txt|sed 'I am a ',' 128... [}'
cela ne fonctionne pas comme je le souhaite. Je voudrais vraiment qu'il dise ce qui suit:
I am a fruit, like 128... [}
I am a bike, like 128... [}
I am a dino, like 128... [}
Approche simple sed
:
sed 's/^/I am a /; s/$/ 128... [}/' file.txt
^
- signifie début de la chaîne/ligne $
- signifie fin de la chaîne/ligne Le résultat:
I am a fruit, like 128... [}
I am a bike, like 128... [}
I am a dino, like 128... [}
Alternativement, avec Awk
vous pouvez faire:
awk '{ print "I am a", $0, "128... [}" }' file.txt
sed 's/.*/PREFIX&SUFFIX/' infile
fera l'affaire, en supposant que PREFIX
et SUFFIX
ne contiennent aucun caractère spécial.
\&/
(barre oblique inverse, esperluette et délimiteur) sont spéciaux lorsqu'ils se trouvent dans la partie droite d'une s
substitution. La signification spéciale de ces caractères peut être supprimée en les échappant (en les précédant d'une barre oblique inverse), par ex. à ajouter A//BC
et pour ajouter XY\Z&&
on exécuterait:
sed 's/.*/A\/\/BC&XY\\Z\&\&/' infile
Perl:
$ Perl -lne 'print "I am a $_ 128... [}"' file
I am a fruit, like 128... [}
I am a bike, like 128... [}
I am a dino, like 128... [}
Plus de Perl:
$ Perl -pe 's/^/I am a /; s/$/ 128... [}/' file
I am a fruit, like 128... [}
I am a bike, like 128... [}
I am a dino, like 128... [}
Et un peu plus de Perl:
$ Perl -lpe '$_="I am a $_ 128... [}"' file
I am a fruit, like 128... [}
I am a bike, like 128... [}
I am a dino, like 128... [}
Pour tous ces éléments, vous pouvez utiliser -i
pour effectuer la modification dans le fichier d'origine:
$ Perl -i -lne 'print "I am a $_ 128... [}"' file
$ Perl -i -pe 's/^/I am a /; s/$/ 128... [}/' file
$ Perl -i -lpe '$_="I am a $_ 128... [}"' file
Sed alternatif
sed -e 's/^\(.*\)$/I am a \1 128 [{/
Il recherche tout .*
Entre le début ^
Et la fin de la ligne $
, Et le place dans un groupe \( \)
. Il le remplace ensuite par le préfixe, le (premier) groupe \1
Et le suffixe.