sed

Hoe alles na patroon te vervangen met 'sed'-opdracht

Hoe alles na patroon te vervangen met 'sed'-opdracht

Vervangende taken kunnen op verschillende manieren in Linux worden gedaan. 'sed'-opdracht is een van de manieren om een ​​vervangende taak uit te voeren. Deze opdracht kan worden gebruikt om tekst in een tekenreeks of een bestand te vervangen door een ander patroon te gebruiken. Hoe je alles kunt vervangen na het overeenkomende patroon met de opdracht 'sed' wordt in deze tutorial getoond.

Vervang alles na de match in een string:

Hoe het deel van een string kan worden vervangen op basis van een overeenkomend patroon en $PARTITION_COLUMN is getoond in dit gedeelte van deze tutorial. Maar deze variabele werkt als het patroon overeenkomt met een woord aan het begin of in het midden van de tekenreeks. Het zal de tekst niet vervangen als het patroon overeenkomt met het laatste woord van de string.

Voorbeeld-1: Vervang alles na de wedstrijd met $PARTITION_COLUMN

De volgende opdracht zoekt naar het teken 'a' en het resterende deel na 'a' wordt vervangen door de tekst 'een populaire blogsite'. $PARTITION_COLUMN.* wordt gebruikt om het resterende deel na het teken 'a' te definiëren.

$ echo "LinuxHint is een website" | sed "s/a $PARTITION_COLUMN.*/een populaire blogsite/"

De volgende uitvoer verschijnt na het uitvoeren van de opdracht:. Hier is 'een website' vervangen door 'een populaire blogsite'.


Het volgende patroon zoekt het woord 'web'  in de tekenreeks en vervang het resterende deel door de 'web' bij de tekst, 'een populaire blogsite' als de overeenkomst bestaat en 'web' is niet het deel van het laatste woord van de tekenreeks.

$ echo "LinuxHint is een website" | sed "s/web.* $PARTITION_COLUMN.*/een populaire blogsite/"

De volgende uitvoer verschijnt na het uitvoeren van de opdracht:. Hier is 'website' het laatste woord van de string, en om deze reden is er geen vervanging gedaan.

Voorbeeld-2: Vervang alles na match met patroon

De volgende opdracht zoekt het woord 'bash' globaal in de string en vervang alles door het woord als het woord in de string voorkomt. 'g' wordt hier gebruikt voor algemeen zoeken.

$ echo "Ik hou van bash-programmering" | sed "s / bash.*/python-script/g"

De volgende uitvoer verschijnt na het uitvoeren van de opdracht:. Hier bestaat 'bash' in het midden van de string, en de vervanging is gedaan.

Vervang alles na de match in een bestand:

Alle inhoud van een bepaalde regel of meerdere regels of resterende regels van een bestand na de match kan worden vervangen met de 'sed' commando. Maak een tekstbestand met de naam aanwezigheid.tekst met de volgende inhoud om de voorbeelden in deze sectie te testen:.

aanwezigheid.tekst

1108885 is aanwezig
1999979 is aanwezig
1769994 is afwezig
1105656 is afwezig
1455999 is afwezig

Voorbeeld -3: Vervang alle inhoud van een regel van een bestand na de match

Het volgende 'sed'-commando zoekt het nummer 1769994 in het bestand en alles met het nummer wordt vervangen door de tekst '1586844 is aanwezig' als het nummer in een regel van het bestand voorkomt.

$ cat allendence.tekst
$ sed "s/1769994.*/1586844 is aanwezig/" aanwezigheid.tekst

De volgende uitvoer verschijnt met de opdrachten:. Hier staat het zoeknummer in de derde regel van het bestand en is de vervanging voltooid.

Voorbeeld -4: Vervang alle inhoud van de meerdere regels van een bestand na de overeenkomst

De volgende 'sed'-opdracht toont het gebruik van de $PARTITION_COLUMN-variabele om meerdere regels uit het bestand te vervangen. De opdracht zoekt '110' aan het begin van elke regel van het bestand en vervangt alles door '110' door de tekst 'Ongeldige invoer' waar de overeenkomende tekst zal worden gevonden.

$ kattenbezoek.tekst
$ sed "s/^110.* $PARTITION_COLUMN.*/Ongeldige toegang/" aanwezigheid.tekst

De volgende uitvoer verschijnt na het uitvoeren van de opdrachten:. '110' bestaat in twee regels van het bestand, en deze zijn vervangen door de vervangende tekst.

Voorbeeld-5: Vervang alle inhoud van een regel van een bestand met 'c' na de overeenkomst

Het volgende 'sed' commando toont het gebruik van 'c' om alles te vervangen na de wedstrijd. Hier, 'c' geeft de verandering aan. De opdracht zoekt naar het woord 'Cadeau' in het bestand en vervang alles van de regel door de tekst, 'Deze regel is vervangen' als het woord in een willekeurige regel van het bestand voorkomt.

$ kattenbezoek.tekst
$ sed '/present/c Deze regel is vervangen door ' presentie'.tekst

De volgende uitvoer verschijnt na het uitvoeren van de opdrachten:. Het woord 'present' bestaat in de eerste twee regels van het bestand en deze twee regels zijn vervangen door de vervangende tekst.

Voorbeeld-6: Vervang alle inhoud van een regel van een bestand op basis van begin- en eindpatroon

Soms is het nodig om tekst te vervangen op basis van het begin- en eindpatroon. Het volgende 'sed'-commando toont de manier om begin- en eindpatronen te definiëren om regels uit een bestand te vervangen. De opdracht zoekt die regels in het bestand dat begint met het nummer 110 en eindigt met het woord 'afwezig' en vervangt alles door het woord 'vervangen' waar de patronen overeenkomen.

$ kattenbezoek.tekst
$ sed -e 's/^110.*afwezig$/vervangen/g' opkomst.tekst

De volgende uitvoer verschijnt na het uitvoeren van de opdrachten:. Hier beginnen de eerste en de vierde regel met het cijfer 110, maar het woord 'afwezig' bestaat alleen in de vierde regel. Dus de vierde regel van het bestand is vervangen door de vervangende tekst.

Conclusie:

'sed'-opdracht is een zeer krachtig hulpmiddel van Linux om verschillende soorten tekstverwerkingsgerelateerde taken uit te voeren. De vervangingstaak op basis van het overeenkomende patroon wordt in deze tutorial besproken door verschillende soorten patronen te gebruiken in het 'sed'-commando. $PARTITION_COLUMN, 'c' en '.*' wordt in deze tutorial gebruikt om alles van een regel van het bestand te vervangen waar het overeenkomende patroon bestaat. Het gebruik van sommige karakters voor het definiëren van patronen is hier getoond, zoals '^' en '$'. Er zijn veel andere tekens om het patroon in reguliere expressies te definiëren voor zoekdoeleinden. Ik hoop dat deze tutorial de lezer zal helpen om de basis te kennen van het vervangen van alles uit een bestand na de wedstrijd.

Gratis en open source game-engines voor het ontwikkelen van Linux-games
Dit artikel behandelt een lijst met gratis en open source game-engines die kunnen worden gebruikt voor het ontwikkelen van 2D- en 3D-games op Linux. E...
Shadow of the Tomb Raider voor Linux-zelfstudie
Shadow of the Tomb Raider is de twaalfde toevoeging aan de Tomb Raider-serie - een actie-avonturengame-franchise gemaakt door Eidos Montreal. De game ...
Hoe FPS te verhogen in Linux?
FPS staat voor Beelden per seconde. De taak van FPS is om de framesnelheid te meten bij het afspelen van video's of speluitvoeringen. In eenvoudige wo...