web-dev-qa-db-fra.com

Ajoutez un préfixe et un suffixe à chaque ligne d'un fichier .txt

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... [}
8
Terkey-Juice

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
17
RomanPerekhrest
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
6
don_crissti

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 
2
terdon

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.

1
CSM