Le contenu de mon filenamefichier est le suivant (par exemple):
My block of line starts from here
START
First line
second line
third line
END
and end to here for example.
Je veux remplacer un bloc de lignes entre STARTet ENDpar un seul mot, par exemple avec SINGLEWORD. Comme ci-dessous:
My block of line starts from here
SINGLEWORD
and end to here for example.
Je peux trouver mon bloc de lignes en utilisant cette commande:
grep -Pzo "START(.|\n)*END" filename
Et le résultat de l'exécution de la commande ci-dessus sera comme ceci:
START
First line
second line
third line
END
Ensuite, j'ai utilisé cette commande pour combiner toutes les lignes en une seule ligne:
LAST_RESULT | sed -e :a -e '/$/N; s/\n/ /; ta'
Ensuite, j'obtiendrai ce résultat:
START First line second line third line END
Et avec ma dernière commande, LAST_RESULTS | sed 's/.*/SINGLEWORD/'je les change en "SINGLEWORD"et j'obtiens ce résultat.
SINGLEWORD
Maintenant, ce que je veux, c'est: Comment puis-je utiliser cette commande (ou votre commande de suggestion) et remplacer (en place) mon bloc de lignes par le mot "SINGLEWORD"? Et le résultat final sera comme ce fichier:
My block of line starts from here
SINGLEWORD
and end to here for example.
seddevrait être possible mais probablement plus difficile à lire (regardez cette question )