sed

Hoe de laatste instantie te vervangen met 'sed'

Hoe de laatste instantie te vervangen met 'sed'
'sed'-opdracht wordt in Linux gebruikt voor verschillende soorten tekstbewerkingen, zoals invoegen, verwijderen, vervangen, enz. Verschillende soorten vervangende taken kunnen eenvoudig worden uitgevoerd door de opdracht 'sed' te gebruiken. Elke vervangende taak kan worden gedaan op basis van de zoektekst of het zoekpatroon. De zoektekst of het zoekpatroon kan meerdere keren voorkomen in de tekenreeks of een bestand waarin het zoeken zal worden uitgevoerd. Hoe u de laatste instantie van de zoektekst of het zoekpatroon kunt vervangen, wordt in deze zelfstudie getoond.

Vervang de laatste instantie van de tekst in een string:

Deze sectie laat zien hoe het laatste voorkomen van het zoekpatroon in een string kan worden vervangen door het 'sed' commando te gebruiken.

Voorbeeld-1: Vervang het laatste voorkomen van een woord op basis van patroon

Het volgende 'sed'-commando zoekt het woord 'PHP' in de string en vervang het zoekwoord door het woord 'AngularJS' als het woord in de string voorkomt.

$ echo "Java PHP Bash Python JavaScript PERL PHP Laravel" |
sed 's/\(.*\)PHP/\1AngularJS/'

De volgende uitvoer verschijnt na het uitvoeren van de opdracht:. Hier, het woord 'PHP' komt twee keer voor in de string, en de laatste keer dat het voorkomt is vervangen door het woord' AngularJS'.

Voorbeeld-2: Vervang het laatste voorkomen van een op cijfers gebaseerd patroon

De volgende 'sed'-opdracht zoekt elk cijfer in de tekenreeks en vervangt het laatste cijfer door het nummer 9.

$ echo "De eerste tellerwaarde 2. De tweede tellerwaarde 4" |
sed 's/\(.*\)[0-9])*/\19/'

De volgende uitvoer verschijnt na het uitvoeren van de opdracht:. Hier verschijnt het cijfer twee keer in de tekenreeks en het laatste cijfer, 4, is vervangen door het nummer 9.

Voorbeeld-3: Vervang het laatste cijfer van een getal op basis van patroon

Het volgende 'sed'-commando vervangt het laatste cijfer dat in de tekenreekswaarde bestaat door de waarde met dubbele nul (0 0).

$ echo "De productprijs is $ 500." | sed 's/\(.*\)[0-9]/\100/'

De volgende uitvoer verschijnt na het uitvoeren van de opdracht:. Hier, 500 bestaat in de tekenreekswaarde. Dus, volgens het vervangingscommando, de laatste nul van 500 is vervangen door twee dubbele nul, en de vervangen waarde is 5000.

Voorbeeld 4: Vervang de laatste keer dat een woord voorkomt door een ander woord

Het volgende 'sed'-commando zoekt het woord 'juni' in de string en vervang het laatste voorkomen van het woord door de waarde, 'Mei'.

$ printf "%s\n" Jan Feb Jun Apr Jun Dec | tr '\n' " |
sed 's/\(.*\)jun/\1mei/' | tr " '\n'

De volgende uitvoer verschijnt na het uitvoeren van de opdracht:. Hier, het woord 'juni' komt twee keer voor in de tekenreeks en de laatste keer dat het voorkomt is vervangen door het woord 'Mei'.

Vervang het laatste voorkomen van een tekst in een bestand:

Maak een tekstbestand met de naam verkoop.tekst met de volgende inhoud om het 'sed'-commando te testen dat in dit deel van de tutorial wordt gebruikt voor het vervangen van de laatste instantie van een tekst op basis van het patroon.

verkoop.tekst

Maand Jaar Bedrag
Januari 2018 $ 200000
maart 2019 $ 300000
april 2019 $ 150000
maart 2020 $ 350000
mei 2019 $ 210000
Januari 2020 $ 240000

Voorbeeld 5: Vervang het laatste voorkomen van een woord door een ander woord

Het volgende 'sed'-commando zoekt het woord 'Januari' in het bestand en vervang de laatste keer dat dit woord voorkomt door het woord, 'Juli'.

$ kat Verkoop.tekst
$ sed '$ s/januari/juli/' Verkoop.tekst

De volgende uitvoer verschijnt na het uitvoeren van de opdrachten:. Het woord 'Januari' verschijnt twee keer in het bestand. Het laatste voorkomen dat bestaat in de 7dit regel van het bestand is vervangen door het woord 'Juli' in de uitvoer.

Voorbeeld-6: Vervang het laatste voorkomen van een nummer door een ander nummer

'tac' commando wordt gebruikt om de inhoud van het bestand om te keren. 'tac' commando wordt gebruikt met het 'sed'-commando in het volgende commando om het laatste voorkomen van . te vervangen '2019' met het woord, '2017'.

$ kat Verkoop.tekst
$tac Verkoop.txt | sed '0,/2019/s/2019/2017/' | tac

De volgende uitvoer verschijnt na het uitvoeren van de opdrachten:. Hier, de jaarwaarde, '2019' verschijnt drie keer in het bestand. De eerste, 'tac' opdracht heeft de inhoud van het bestand omgekeerd en de uitvoer naar de 'sed' commando om het eerste voorkomen van te vervangen '2019' wat de laatste keer in het bestand is volgens de jaarwaarde, '2017'. Na de vervanging is de uitvoer verzonden naar de 'tac' commando om de uitvoer weer om te keren. Op deze manier wordt het laatste voorkomen van '2019' is vervangen door de waarde, '2017''.

Voorbeeld-7: Vervang alles van een regel op basis van de laatste keer dat een woord voorkomt

Het volgende 'sed' commando zal de regel vervangen door een tab (\t) gescheiden tekst waar de regel begint met de string 'maar' voor de laatste keer in het bestand.

$ kat Verkoop.tekst
$tac Verkoop.txt | sed '0,/^Mar.*/s/^Mar.*/juli\t\t2018\t$ 400000/' | tac

De volgende uitvoer verschijnt na het uitvoeren van de opdrachten:. Twee regels in het bestand beginnen met de tekenreeks, 'maar', en het laatste exemplaar van deze tekenreeks verschijnt in de 5dit lijn. De eerste 'tac' opdracht is gebruikt om de inhoud van het bestand om te keren en de uitvoer naar de 'sed' opdracht. 'sed' opdracht heeft de regel vervangen door een tekst, 'juli 2018 $ 400000' waar de zoekreeks voor het eerst werd gevonden. De uitvoer van de 'sed'' opdracht is verzonden naar de 'tac' commando opnieuw om de uitvoer om te keren die de hoofdinhoud van het bestand is.

Conclusie:

'sed'-opdracht kan worden gebruikt om elk deel van een tekenreeks of een regel van het bestand op verschillende manieren te vervangen door reguliere expressiepatronen te gebruiken. Deze tutorial toonde de manieren om de laatste instantie van de zoektekst in een string of een bestand te vervangen door meerdere 'sed'-commando's te gebruiken. Hoe het 'tac'-commando kan worden gebruikt met het 'sed'-commando om de laatste instantie van de zoektekst te vervangen, is ook getoond in deze tutorial. Maar alle commando's die hier worden gebruikt, zullen de uitvoer tijdelijk genereren. U moet de '-i'-optie gebruiken met de 'sed'-opdracht om de inhoud van het bestand permanent te wijzigen op basis van het patroon.

Cursor springt of beweegt willekeurig tijdens het typen in Windows 10
Als u merkt dat uw muiscursor vanzelf springt of beweegt, automatisch, willekeurig tijdens het typen op een Windows-laptop of -computer, dan kunnen en...
De scrollrichting van de muis en touchpads omkeren in Windows 10
Muis en Touchpads maken computergebruik niet alleen eenvoudig, maar ook efficiënter en minder tijdrovend. We kunnen ons een leven zonder deze apparate...
Hoe de muisaanwijzer en cursorgrootte, kleur en schema op Windows 10 te veranderen
De muisaanwijzer en cursor in Windows 10 zijn zeer belangrijke aspecten van het besturingssysteem. Dit geldt ook voor andere besturingssystemen, dus i...