J'essaie d'utiliser sed ou awk pour remplacer 5 lignes dans un fichier smb mais je n'ai aucune idée de comment gérer les nouvelles lignes.
J'essaie d'utiliser sed ou awk pour remplacer 5 lignes dans un fichier smb mais je n'ai aucune idée de comment gérer les nouvelles lignes.
Réponses:
Sed est assez mauvais à cela, car il exploite une ligne à la fois. La seule technique décente que j'ai jamais vue pour faire cela est celle-ci , qui consiste à stocker le fichier entier dans le tampon de maintien de sed, puis à l'utiliser en une seule fois:
sed -n '1h;1!H;${g;s/search/replace/;p;}'
Si vous le pouvez, il est beaucoup plus facile d'utiliser perl pour y parvenir:
perl -0pe 's/search/replace/'
search
peut contenir \n
s pour représenter des sauts de ligne
sed
multiliner.
-0
définit le séparateur d'enregistrement sur null, donc tout le fichier sera lu en une seule fois au lieu de ligne par ligne. -p
fait imprimer le résultat après la substitution. -e
doit prendre l'argument suivant comme expression à exécuter, et s/search/replace/
est cette expression