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.
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 aanwezig1999979 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.