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/'
searchpeut contenir \ns pour représenter des sauts de ligne
sedmultiliner.
-0définit le séparateur d'enregistrement sur null, donc tout le fichier sera lu en une seule fois au lieu de ligne par ligne. -pfait imprimer le résultat après la substitution. -edoit prendre l'argument suivant comme expression à exécuter, et s/search/replace/est cette expression