Maison >tutoriels informatiques >connaissances en informatique >Éditeur de flux (SED) : bases
SED, également connu sous le nom de Stream Editor, est un outil très utile. Il est utilisé pour rechercher un mot ou un modèle spécifique, puis effectuer une opération sur ce mot ou ce modèle, ou en d'autres termes, le transformer. Sous Windows, SED est également connu sous le nom de fonction Rechercher et remplacer. SED est fourni nativement avec Ubuntu, il n'y a donc rien à installer ; Dans ce tutoriel, nous allons vous montrer comment utiliser SED ou Stream Editor.
La commande la plus importante dans SED ou éditeur de flux est la commande "s". Le « s » signifie substitut. La syntaxe est la suivante :
/regexp/remplacement/drapeau
Utilisons donc un fichier appelé « file.txt » comme exemple. Voici à quoi ressemble "file.txt" si vous le suivez :
Utilisons un exemple pour illustrer le fonctionnement de la commande « S » :
SED‘S/First/Moon/I’file.txt>moon.txt
Quand une expression comme celle-ci est donnée, cela signifie :
Recherché dans le fichier.txt
Dans SED, remplacez le mot « premier » par « lune » uniquement dans la première instance (ce qui signifie que si « premier » apparaît plusieurs fois, seule la première fois sera remplacée). Cette commande recherche dans un fichier nommé "file.txt" et une fois le remplacement terminé, les résultats seront enregistrés dans le fichier "moon.txt".
Voici à quoi ça ressemble :
N'oubliez pas de mettre "/" là où c'est nécessaire. Si "/" est omis, SED n'acceptera pas la commande.
Jusqu'à présent, nous avons seulement remplacé « première fois » par le mot « rencontre ». Maintenant, disons que nous voulons remplacer le mot « ligne » (qui apparaît plusieurs fois – quatre fois, pour être précis) dans la troisième ligne par le mot « Ange ».
Comment cibler spécifiquement la troisième ligne ? Nous utilisons la commande suivante :
SED‘3S/Line/Angel/I’file.txt>angel.txt
Alors, que s'est-il passé ici ? D'accord, "3" spécifie le numéro de ligne. Nous arrivons donc à la troisième ligne. Ensuite, remplacez « angel.txt » par « line » dans le fichier nommé « file.txt » et enregistrez le fichier converti sous « angel.txt ».
Et si nous voulons remplacer ou convertir les lignes « 3 » et « 4 » ?
Sed‘3,4s/line/Angel/I’file.txt>angel2.txt
Notez que dans l'exemple précédent, nous avons utilisé le drapeau "i" pour représenter ignorer. Maintenant, nous utilisons le drapeau "g" pour représenter global.
Utilisons un exemple pour illustrer le fonctionnement de la commande « s » :
sed's/line/sun/g 'file.txt>
Quand une expression comme celle-ci est donnée, cela signifie :G signifie mondial. Rappelez-vous, dans le premier exemple, lorsque nous utilisions le drapeau "i", il n'y avait qu'une seule substitution. Puisque nous avons ajouté un « g » à global, cela signifie qu’il existe des alternatives partout. Ainsi, au lieu de dire première rangée, deuxième rangée, troisième rangée et dernière rangée, il est écrit premier soleil, deuxième soleil, troisième soleil et dernier soleil. Il remplace les lignes de mots (partout) dans tout le fichier par le mot « soleil ».
Maintenant, que se passe-t-il si nous voulons sélectionner une ligne en fonction des mots qu'elle contient ? Eh bien, nous pouvons voir que la dernière ligne de "file.txt" contient le mot "last". Maintenant, disons que nous voulons "C'est la dernière ligne". C'est le dernier mot." "C'est le dernier fantôme. C'est le dernier mot."
Sed'/last/S/line/host/'file.txt>.ghost.txt
Le "dernier" ici indique à SED de trouver la ligne contenant le mot "dernier", puis de remplacer le mot "ligne" par "fantôme" dans cette ligne.
Maintenant, disons que nous voulons faire le contraire. Supposons que nous souhaitions que chaque ligne sans le mot «dernière» ait le mot «ligne» remplacé par «hôte». Écrivons ce qui suit :
Comme vous pouvez le voir ici, chaque ligne sauf la dernière ligne (qui contient le mot « dernier ») a le mot « fantôme » remplacé par le mot « ligne ».
Nous pouvons également le faire en utilisant les numéros de ligne :
Dans ce cas, les lignes 3 et 4 sont omises, mais une ligne sur deux a le mot « ligne » remplacé par le mot « nuit ».
Que devons-nous faire si nous voulons changer le mot « premier » en « jour », le mot « deuxième » en « nuit » et le mot « repos » en « fantôme » ? Nous faisons cela en utilisant des points-virgules. N'oubliez pas de mettre le point-virgule à la fin !
Veuillez noter que vous n'êtes pas obligé de mettre le signe « i » ou le signe « ignorer », mais vous devez mettre la barre oblique (/) après la phrase de conversion.
Maintenant, vérifions-le avec un exemple :
sed's/first/day/;s/second/night/;s/third/ghost/;s/last/ghost/;'file.txt>
Bon codage !
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!