De volgende uitvoer laat zien dat GNU Sed van versie 4.4 in het systeem is geïnstalleerd.
Syntaxis:
sed [opties]...[script] [het dossier]
Als er geen bestandsnaam is opgegeven bij het commando `sed`, dan werkt het script op standaard invoergegevens. Het `sed`-script kan zonder enige optie worden uitgevoerd.
Inhoud :
- Basistekstvervanging met 'sed'
- Vervang alle exemplaren van een tekst in een bepaalde regel van een bestand door de 'g'-optie te gebruiken
- Vervang alleen het tweede exemplaar van een overeenkomst op elke regel
- Vervang alleen het laatste exemplaar van een overeenkomst op elke regel
- Vervang de eerste overeenkomst in een bestand door nieuwe tekst
- Vervang de laatste overeenkomst in een bestand door nieuwe tekst
- Ontsnappen aan backslash in vervangcommando's om zoeken en vervangen van bestandspaden te beheren
- Vervang het volledige pad van alle bestanden door alleen de bestandsnaam geen map
- Vervang tekst, maar alleen als er een andere tekst in de tekenreeks wordt gevonden
- Vervang tekst, maar alleen als er geen andere tekst in de tekenreeks wordt gevonden
- Voeg string toe voor na het overeenkomende patroon met ' 1 '
- Overeenkomende regels verwijderen
- Verwijder overeenkomende regel en 2 regels na overeenkomende regel
- Verwijder alle spaties aan het einde van de tekstregel
- Alle regels verwijderen die twee keer een overeenkomst hebben op de regel
- Verwijder alle regels die de enige witruimte hebben
- Alle niet-afdrukbare tekens verwijderen
- Als er een overeenkomst in de rij is, voeg dan iets toe aan het einde van de regel
- Als er een overeenkomst is in de regel, voeg dan een regel in vóór de overeenkomst
- Als er een overeenkomst is in de regel, voeg dan een regel in na de overeenkomst
- Als er geen overeenkomst is, voeg dan iets toe aan het einde van de regel
- Als er geen overeenkomst is, verwijder de regel
- Overeenkomende tekst dupliceren na het toevoegen van een spatie na de tekst
- Vervang een van een lijst met tekenreeksen door de nieuwe tekenreeks
- Vervang een overeenkomende tekenreeks door een tekenreeks die nieuwe regels bevat
- Verwijder nieuwe regels uit het bestand en plaats een komma aan het einde van elke regel
- Verwijder komma's en voeg nieuwe regels toe om de tekst in meerdere regels te splitsen
- Vind hoofdletterongevoelige overeenkomst en verwijder regel
- Zoek niet-hoofdlettergevoelige overeenkomst en vervang deze door nieuwe tekst
- Vind hoofdletterongevoelige overeenkomst en vervang door alle hoofdletters van dezelfde tekst
- Vind hoofdletterongevoelige overeenkomst en vervang door alle kleine letters van dezelfde tekst
- Vervang alle hoofdletters in tekst door kleine letters
- Zoek naar het nummer in de rij en voeg het valutasymbool toe na het nummer
- Komma's toevoegen aan getallen met meer dan 3 cijfers
- Vervang tabtekens door 4 spatietekens
- Vervang 4 opeenvolgende spatietekens door een tabteken
- Knip alle regels af tot de eerste 80 tekens
- Zoek naar een tekenreeksregex en voeg er wat standaardtekst aan toe
- Zoek naar een string-regex en een tweede kopie van de gevonden string erna
- Uitvoeren van meerregelige `sed`-scripts vanuit een bestand
- Overeenkomen met een patroon met meerdere regels en vervangen door nieuwe tekst met meerdere regels
- Vervang de volgorde van twee woorden die overeenkomen met een patroon
- Gebruik meerdere sed-opdrachten vanaf de opdrachtregel
- Combineer sed met andere commando's
- Een lege regel in een bestand invoegen
- Verwijder alle alfanumerieke tekens van elke regel van een bestand.
- Gebruik '&' om de tekenreeks te matchen
- Wissel van woordpaar
- Zet het eerste teken van elk woord in een hoofdletter
- Regelnummers van het bestand afdrukken
1. Basistekstvervanging met 'sed'
Elk specifiek deel van een tekst kan worden doorzocht en vervangen door zoek- en vervangingspatroon te gebruiken met de opdracht `sed`. In het volgende voorbeeld geeft 's' de zoek- en vervangtaak aan. Het woord 'Bash' wordt gezocht in de tekst, Bash Scripting Language en als het woord in de tekst voorkomt, wordt het vervangen door het woord 'Perl'.
$gooide uit 'Bash-scripttaal' | sed 's/Bash/Perl/'
Uitgang:
Het woord 'Bash' bestaat in de tekst. De uitvoer is dus 'Perl Scripting Language'.
Het `sed`-commando kan ook worden gebruikt om elk deel van een bestandsinhoud te vervangen. Maak een tekstbestand met de naam weekdag.txt met de volgende inhoud.
weekdag.txt
maandagDinsdag
woensdag
donderdag
vrijdag
zaterdag
zondag
Het volgende commando zoekt en vervangt de tekst ‘zondag’ door de tekst ‘zondag is feestdag’.
$katweekdag.txt$sed 's/zondag/zondag is feestdag/'weekdag.txt
Uitgang:
‘Sunday’ bestaat in het weekday.txt-bestand en dit woord wordt vervangen door de tekst ‘Sunday is holiday’ na het uitvoeren van het bovenstaande `sed`-commando.
2. Vervang alle exemplaren van een tekst in een bepaalde regel van een bestand met de optie 'g'
De 'g'-optie wordt gebruikt in de opdracht `sed' om alle exemplaren van een overeenkomend patroon te vervangen. Maak een tekstbestand met de naam python.txt met de volgende inhoud om het gebruik van de 'g'-optie te kennen. Dit bestand bevat het woord. 'Python' meerdere keren.
python.txt
Python is een zeer populaire taal.
Python is gemakkelijk te gebruiken. Python is gemakkelijk te leren.
Python is een platformonafhankelijke taal
De volgende opdracht vervangt alle exemplaren van ' Python ’ in de tweede regel van het bestand, python.txt . Hier, 'Python' komt twee keer voor in de tweede regel.
$ kattenpython.tekst$ sed'2 s / Python / perl / g'Python.tekst
Uitgang:
De volgende uitvoer verschijnt na het uitvoeren van het script. Hier wordt alle voorkomen van 'Python' in de tweede regel vervangen door 'Perl'.
3. Vervang alleen het tweede exemplaar van een overeenkomst op elke regel
Als een woord meerdere keren in een bestand voorkomt, kan het specifieke voorkomen van het woord in elke regel worden vervangen door het commando `sed` te gebruiken met het nummer van de vermelding. Het volgende `sed`-commando vervangt het tweede exemplaar van het zoekpatroon in elke regel van het bestand, python.txt .
$ sed's/Python/perl/g2'Python.tekstUitgang:
De volgende uitvoer verschijnt na het uitvoeren van de bovenstaande opdracht. Hier, de zoektekst, ' Python' verschijnt slechts twee keer in de tweede regel en wordt vervangen door de tekst ' Perl '.
4. Vervang alleen het laatste exemplaar van een overeenkomst op elke regel
Maak een tekstbestand met de naam lang.txt met de volgende inhoud.
lang.txt
Bash programmeertaal. Python programmeertaal. Perl programmeertaal.
Hypertext opmaaktaal.
Uitbreidbare opmaaktaal.
5. Vervang de eerste overeenkomst in een bestand door nieuwe tekst
De volgende opdracht vervangt alleen de eerste overeenkomst van het zoekpatroon, ' Python ' door de tekst, 'perl' ‘. Hier, '1' wordt gebruikt om overeen te komen met het eerste voorkomen van het patroon.
$ kattenpython.tekst$ sed'1 s / Python / perl /'Python.tekst
Uitgang:
De volgende uitvoer verschijnt na het uitvoeren van de bovenstaande opdrachten. Hier. het eerste voorkomen van 'Python' in de eerste regel wordt vervangen door 'perl'.
6. Vervang de laatste overeenkomst in een bestand door nieuwe tekst
De volgende opdracht vervangt het laatste exemplaar van het zoekpatroon, 'Python ' door de tekst, ‘Baas’. Hier, '$' symbool wordt gebruikt om overeen te komen met het laatste voorkomen van het patroon.
$ kattenpython.tekst$ sed -e'$ s / Python / Bash /'Python.tekst
Uitgang:
De volgende uitvoer verschijnt na het uitvoeren van de bovenstaande opdrachten.
7. Ontsnappen aan backslash in vervangcommando's om zoeken en vervangen van bestandspaden te beheren
Het is noodzakelijk om te ontsnappen aan de backslash in het bestandspad om te zoeken en te vervangen. De volgende opdracht van `sed` voegt een backslash () toe aan het bestandspad.
$gooide uit /huis/ubuntu/code/perl/add.pl| sed 's; /; \ /; g'Uitgang:
Het bestandspad, ‘/home/ubuntu/code/perl/add.pl’ wordt geleverd als invoer in de opdracht `sed' en de volgende uitvoer zal verschijnen na het uitvoeren van de bovenstaande opdracht.
8. Vervang het volledige pad van alle bestanden door alleen de bestandsnaam geen map
De bestandsnaam kan heel eenvoudig worden opgehaald uit het bestandspad met behulp van ` basisnaam` opdracht. Het `sed`-commando kan ook worden gebruikt om de bestandsnaam uit het bestandspad op te halen. De volgende opdracht haalt de bestandsnaam alleen op uit het bestandspad dat door de `echo`-opdracht wordt gegeven.
$gooide uit '/home/ubuntu/temp/mijnbestand.txt' | sed 's/.*///'Uitgang:
De volgende uitvoer verschijnt na het uitvoeren van de bovenstaande opdracht. Hier, de bestandsnaam, ' mijnbestand.txt' wordt afgedrukt als uitvoer.
9. Vervang tekst, maar alleen als er een andere tekst in de tekenreeks wordt gevonden
Maak een bestand met de naam ' dept.txt' met de volgende inhoud om elke tekst op basis van andere tekst te vervangen.
dept.txt
Lijst met totaal aantal studenten:
CSE - TellenEEE - Aantal
Burgerlijk - Graaf
In het volgende `sed`-commando worden twee vervangcommando's gebruikt. Hier de tekst, ‘ Graaf ‘wordt vervangen door 100 in de regel die de tekst bevat, 'CSE' ' en de tekst, ' Graaf' zal worden vervangen door 70 in de regel die het zoekpatroon bevat, ' EEA' .
$katdept.txt$sed -En '/CSE/s/Count/100/; /EEE/s/Count/70/;'dept.txt
Uitgang:
De volgende uitvoer zal verschijnen na het uitvoeren van de bovenstaande opdrachten.
10. Vervang tekst, maar alleen als er geen andere tekst in de tekenreeks wordt gevonden
Het volgende `sed`-commando vervangt de 'Count'-waarde in de regel die de tekst 'CSE' niet bevat. dept.txt bestand bevat twee regels die niet de tekst 'CSE' bevatten. Dus de ' Graaf ' tekst wordt vervangen door 80 in twee regels.
$katdept.txt$sed -l -En '/CSE/! s/Tel/80/;'dept.txt
Uitgang:
De volgende uitvoer verschijnt na het uitvoeren van de bovenstaande opdrachten.
11. Voeg string toe voor en na het overeenkomende patroon met '1'
De volgorde van overeenkomende patronen van de opdracht `sed` wordt aangegeven met '1', '2' enzovoort. Het volgende `sed`-commando zoekt in het patroon, 'Bash' en als het patroon overeenkomt, wordt het geopend door '1' in het deel van het vervangen van tekst. Hier wordt de tekst 'Bash' doorzocht in de invoertekst en wordt één tekst toegevoegd vóór en een andere tekst wordt toegevoegd na '1'.
$gooide uit 'Bash-taal' | sed 's/(Bash)/Leer 1 programmeren/'Uitgang:
De volgende uitvoer verschijnt na het uitvoeren van de bovenstaande opdracht. Hier, ' Leren' tekst is eerder toegevoegd 'Bash' en ' programmeren ’ tekst wordt toegevoegd na ‘ Bas'.
12. Overeenkomende regels verwijderen
'NS' optie wordt gebruikt in het `sed` commando om elke regel uit het bestand te verwijderen. Maak een bestand met de naam os.txt en voeg de volgende inhoud toe om de functie van te testen 'NS' optie.
kat os.txt
ramenLinux
Android
JIJ
Het volgende `sed`-commando verwijdert die regels uit: os.txt bestand dat de tekst 'OS' bevat.
$katos.txt$sed '/De d'os.txt
Uitgang:
De volgende uitvoer verschijnt na het uitvoeren van de bovenstaande opdrachten.
13. Verwijder overeenkomende regel en 2 regels na overeenkomende regel
De volgende opdracht verwijdert drie regels uit het bestand: os.txt als het patroon, ' Linux’ is gevonden. os.txt bevat de tekst, 'Linux' ’ in de tweede regel. Deze regel en de volgende twee regels worden dus verwijderd.
$sed '/Linux /, + 2d'os.txtUitgang:
De volgende uitvoer verschijnt na het uitvoeren van de bovenstaande opdracht.
14. Verwijder alle spaties aan het einde van de tekstregel
Gebruik makend van [:blank:] class kan worden gebruikt om spaties en tabs uit de tekst of de inhoud van een bestand te verwijderen. De volgende opdracht verwijdert de spaties aan het einde van elke regel van het bestand, os.txt.
$katos.txt$sed 's/[[:blanco:]]*$//'os.txt
Uitgang:
os.txt bevat lege regels na elke regel die worden verwijderd door het bovenstaande `sed`-commando.
15. Verwijder alle regels die twee keer een overeenkomst hebben op de regel
Maak een tekstbestand met de naam, invoer.txt met de volgende inhoud en verwijder die regels van het bestand dat het zoekpatroon twee keer bevat.
invoer.txt
PHP is een server-side scripttaal.
PHP is een open-source taal en PHP is hoofdlettergevoelig.
PHP is platformonafhankelijk.
'PHP'-tekst bevat twee keer in de tweede regel van het bestand, invoer.txt . In dit voorbeeld worden twee `sed`-commando's gebruikt om de regels te verwijderen die het patroon ' bevatten php ' twee maal. Het eerste `sed` commando zal het tweede voorkomen van 'php' in elke regel vervangen door ' dl ' en stuur de uitvoer naar het tweede `sed'-commando als invoer. De tweede opdracht `sed` verwijdert de regels die de tekst bevatten, ' dl '.
$katinvoer.txt$sed 's/php/dl/i2;t'invoer.txt| sed '/dl/d'
Uitgang:
invoer.txt bestand heeft twee regels die het patroon bevatten, 'php' twee maal. De volgende uitvoer verschijnt dus na het uitvoeren van de bovenstaande opdrachten.
16. Verwijder alle regels die alleen witruimte hebben
Selecteer een bestand dat lege regels in de inhoud bevat om dit voorbeeld te testen. invoer.txt bestand dat in het vorige voorbeeld is gemaakt, bevat twee lege regels die kunnen worden verwijderd met het volgende `sed`-commando. Hier wordt '^$' gebruikt om de lege regels in het bestand te achterhalen, invoer.txt.
$katinvoer.txt$sed '/^$/d'invoer.txt
Uitgang:
De volgende uitvoer verschijnt na het uitvoeren van de bovenstaande opdrachten.
17. Verwijder alle niet-afdrukbare tekens
Niet-afdrukbare tekens kunnen uit elke tekst worden verwijderd door niet-afdrukbare tekens door geen te vervangen. De klasse [:print:] wordt in dit voorbeeld gebruikt om de niet-afdrukbare tekens te achterhalen. ' ' is een niet-afdrukbaar teken en kan niet direct worden geparseerd door het `echo`-commando. Hiervoor wordt het ' '-teken toegewezen in een variabele, $tab die wordt gebruikt in een `echo`-commando. De uitvoer van het `echo`-commando wordt verzonden in het `sed`-commando dat het teken ' ' uit de uitvoer zal verwijderen.
$tabblad= $' '$gooide uit 'Hallo$tabWereld'
$gooide uit 'Hallo$tabWereld' | sed 's/[^[:print:]]//g'
Uitgang:
De volgende uitvoer verschijnt na het uitvoeren van de bovenstaande opdrachten. Het eerste `echo-commando drukt de uitvoer af met tabruimte en het `sed`-commando drukt de uitvoer af nadat de tabruimte is verwijderd.
18. Als er een overeenkomst in de rij is, voeg dan iets toe aan het einde van de regel
De volgende opdracht voegt '10' toe aan het einde van de regel die de tekst 'Windows' bevat in de os.txt het dossier.
$katos.txt$sed '/ Windows / s / $ / 10 /'os.txt
Uitgang:
De volgende uitvoer verschijnt na het uitvoeren van de opdracht.
19. Als er een overeenkomst in de regel is, voeg dan een regel in vóór de tekst
Het volgende `sed` commando zoekt in de tekst, ' PHP is platformonafhankelijk’ in de invoer.txt bestand dat eerder is gemaakt. Als het bestand deze tekst in een regel bevat, dan, ' PHP is een geïnterpreteerde taal’ wordt voor die regel ingevoegd.
$katinvoer.txt$sed '/PHP is platformonafhankelijk/ s/^/PHP is een geïnterpreteerde taal. /'invoer.txt
Uitgang:
De volgende uitvoer verschijnt na het uitvoeren van de bovenstaande opdrachten.
20. Als er een overeenkomst in de regel is, voeg dan een regel in na die regel
Het volgende `sed` commando zoekt in de tekst, ' Linux’ in het bestand os.txt en als de tekst in een regel bestaat, dan een nieuwe tekst, ' Ubuntu ' wordt na die regel ingevoegd.
$katos.txt$sed 's/Linux/& Ubuntu/'os.txt
Uitgang:
De volgende uitvoer verschijnt na het uitvoeren van de bovenstaande opdrachten.
21. Als er geen match is, voeg dan iets toe aan het einde van de regel
Het volgende `sed`-commando zoekt die regels in os.txt die de tekst niet bevat, 'Linux' en voeg de tekst toe, ' Besturingssysteem ' aan het einde van elke regel. Hier, ' $ ' symbool wordt gebruikt om de regel te identificeren waar de nieuwe tekst zal worden toegevoegd.
$katos.txt$sed '/Linux/! S/$/ Besturingssysteem/'os.txt
Uitgang:
De volgende uitvoer verschijnt na het uitvoeren van de bovenstaande opdrachten. Er zijn drie regels in het bestand os.txt die niet de tekst 'Linux' en de nieuwe tekst aan het einde van deze regels bevatten.
22. Als er geen overeenkomst is, verwijder dan de regel
Maak een bestand met de naam web.txt en voeg de volgende inhoud toe en verwijder regels die niet het overeenkomende patroon bevatten. web.txt HTML 5JavaScriptCSSPHPMySQLJQuery De volgende `sed`-opdracht zoekt en verwijdert die regels die de tekst 'CSS' niet bevatten. $ cat web.txt$ sed ‘/CSS/!d’ web.txt Uitgang: De volgende uitvoer verschijnt na het uitvoeren van de bovenstaande opdrachten. Er is één regel in het bestand die de tekst 'CSE' bevat. De uitvoer bevat dus slechts één regel.
23. Dupliceer overeenkomende tekst na het toevoegen van een spatie na de tekst
Het volgende `sed` commando zoekt het woord 'to' in het bestand, python.txt en als het woord bestaat, wordt hetzelfde woord na het zoekwoord ingevoegd door spatie toe te voegen. Hier, '&' symbool wordt gebruikt om de dubbele tekst toe te voegen.
$katpython.txt$sed -En 's / tot / & tot / g'python.txt
Uitgang:
De volgende uitvoer verschijnt na het uitvoeren van de opdrachten. Hier wordt het woord 'naar' in het bestand gezocht, python.txt en dit woord bestaat in de tweede regel van dit bestand. Dus, 'tot ’ met spatie wordt toegevoegd na de overeenkomende tekst.
24. Vervang een lijst met strings door de nieuwe string
U moet twee lijstbestanden maken om dit voorbeeld te testen. Maak een tekstbestand met de naam lijst1.txt en voeg de volgende inhoud toe.
kattenlijst1.txt
1001=>Jafar Ali1023=>Nir Hossain
1067=>John Michel
Maak een tekstbestand met de naam lijst2.txt en voeg de volgende inhoud toe.
$ kattenlijst2.txt
1001CSE GPA3.631002CSE GPA3.24
1023CSE GPA3.11
1067CSE GPA3.84
Het volgende `sed`-commando komt overeen met de eerste kolom van de twee hierboven getoonde tekstbestanden en vervangt de overeenkomende tekst door de waarde van de derde kolom van het bestand lijst1.txt.
$katlijst1.txt$katlijst2.txt
$sed ``katlijst1.txt| awk '{print' -e s / '$ 1' / '$ 3' / '}'``<<<'` kattenlijst2.txt`'
Uitgang:
1001, 1023 en 1067 van lijst1.txt bestand match met de drie gegevens van lijst2.txt bestand en deze waarden worden vervangen door overeenkomstige namen van de derde kolom van lijst1.txt .
25. Vervang de overeenkomende tekenreeks door een tekenreeks die nieuwe regels bevat
De volgende opdracht zal invoer nemen van de opdracht `echo` en het woord zoeken, 'Python' in de tekst. Als het woord in de tekst bestaat, dan is er een nieuwe tekst, 'Toegevoegde tekst' wordt ingevoegd met nieuwe regel. $ echo Bash Perl Python Java PHP ASP | sed ‘s/Python/Toegevoegde tekst /’ Uitgang: De volgende uitvoer verschijnt na het uitvoeren van de bovenstaande opdracht.
26. Verwijder nieuwe regels uit het bestand en plaats een komma aan het einde van elke regel
Het volgende `sed` commando zal elke nieuwe regel vervangen door een komma in het bestand os.txt . Hier, -Met optie wordt gebruikt om de regel te scheiden met een NULL-teken.
$sed -Met 's/ /,/g'os.txtUitgang:
De volgende uitvoer verschijnt na het uitvoeren van de bovenstaande opdracht.
27. Verwijder komma's en voeg een nieuwe regel toe om de tekst in meerdere regels te splitsen
Het volgende `sed`-commando neemt de door komma's gescheiden regel van het `echo`-commando als invoer en vervangt de komma door newline.
$gooide uit 'Kaniz Fatema, 30e, partij' | sed 's/,/N/G'Uitgang:
De volgende uitvoer verschijnt na het uitvoeren van de bovenstaande opdracht. De invoertekst bevat drie door komma's gescheiden gegevens die worden vervangen door newline en in drie regels worden afgedrukt.
28. Vind hoofdletterongevoelige overeenkomst en verwijder regel
'I' wordt gebruikt in de opdracht `sed' voor de hoofdletterongevoelige overeenkomst die het negeren van hoofdletters aangeeft. Het volgende `sed`-commando zoekt in de regel die het woord bevat, 'linux' ' en verwijder de regel uit os.txt het dossier.
$katos.txt$sed '/linux/ID'os.txt
Uitgang:
De volgende uitvoer verschijnt na het uitvoeren van de bovenstaande opdracht. os.txt bevat het woord 'Linux' dat overeenkwam met het patroon, 'linux' voor hoofdletterongevoelig zoeken en verwijderd.
29. Zoek niet-hoofdlettergevoelige overeenkomst en vervang deze door nieuwe tekst
Het volgende `sed`-commando neemt de invoer van het `echo`-commando en vervangt het woord 'bash' door het woord 'PHP'.
$gooide uit 'Ik hou van bash-programmering' | sed 's/Bash/PHP/i'Uitgang:
De volgende uitvoer verschijnt na het uitvoeren van de bovenstaande opdracht. Hier kwam het woord 'Bash' overeen met het woord 'bash' voor hoofdletterongevoelig zoeken en vervangen door het woord 'PHP'.
30. Zoek niet-hoofdlettergevoelige overeenkomst en vervang deze door alle hoofdletters van dezelfde tekst
' U' wordt gebruikt in `sed` om elke tekst naar hoofdletters te converteren. Het volgende `sed`-commando zoekt het woord, 'linux' ' in de os.txt bestand en als het woord bestaat, zal het het woord vervangen door alle hoofdletters.
$katos.txt$sed 's / (linux ) / U 1 / Ig'os.txt
Uitgang:
De volgende uitvoer verschijnt na het uitvoeren van de bovenstaande opdrachten. Het woord 'Linux' van het os.txt-bestand is vervangen door het woord 'LINUX'.
31. Zoek niet-hoofdlettergevoelige overeenkomst en vervang door alle kleine letters van dezelfde tekst
'DE' wordt gebruikt in `sed` om elke tekst om te zetten in kleine letters. Het volgende `sed`-commando zoekt het woord, 'Linux' in de os.txt bestand en vervang het woord door alle kleine letters.
$katos.txt$sed 's / (linux ) / L 1 / Ig'os.txt
Uitgang:
De volgende uitvoer verschijnt na het uitvoeren van de bovenstaande opdrachten. Het woord 'Linux' wordt hier vervangen door het woord 'linux'.
32. Vervang alle hoofdletters van de tekst door kleine letters
Het volgende `sed`-commando zoekt alle hoofdletters in de os.txt bestand en vervang de tekens door kleine letters met behulp van 'L'.
$katos.txt$sed 's/(.*)/L1/'os.txt
Uitgang:
De volgende uitvoer verschijnt na het uitvoeren van de bovenstaande opdrachten.
33. Zoek naar een nummer in de rij en voeg een valutasymbool toe vóór de nummer
Maak een bestand met de naam items.txt met de volgende inhoud.
items.txt
HDD 100Monitor 80
Muis 10
Het volgende `sed`-commando zoekt het nummer in elke regel van: items.txt bestand en voeg het valutasymbool '$' toe voor elk nummer.
$katitems.txt$sed 's / ([0-9] ) / $ 1 / g'items.txt
Uitgang:
De volgende uitvoer verschijnt na het uitvoeren van de bovenstaande opdrachten. Hier wordt het '$'-symbool toegevoegd vóór het nummer van elke regel.
34. Voeg komma's toe aan getallen met meer dan 3 cijfers
Het volgende `sed`-commando neemt een getal als invoer van het `echo`-commando en voegt een komma toe na elke groep van drie cijfers die vanaf rechts worden geteld. Hier geeft ':a' het label aan en wordt 'ta' gebruikt om het groeperingsproces te herhalen.
$gooide uit '5098673' | sed -En:tot-En 's / (. * [0-9] ) ([0-9] {3 } ) / 1, 2 /; ta'Uitgang:
Het nummer 5098673 wordt gegeven in het `echo`-commando en het `sed`-commando genereerde het nummer 5.098.673 door een komma toe te voegen na elke groep van drie cijfers.
35. Vervangt tabteken door 4 spatietekens
Het volgende `sed`-commando vervangt elk tabteken ( ) door vier spatietekens. '$'-symbool wordt gebruikt in de opdracht `sed' om overeen te komen met het tab-teken en 'g' wordt gebruikt om alle tab-tekens te vervangen.
$gooide uit -En '1' 2 3' | sed$'s/ / /g'Uitgang:
De volgende uitvoer verschijnt na het uitvoeren van de bovenstaande opdracht.
36. Vervangt 4 opeenvolgende spatietekens door tabteken
Het volgende commando vervangt 4 opeenvolgende karakters door tab ( ) karakter.
$gooide uit -En '1 2' | sed$'s/ / /g'Uitgang:
De volgende uitvoer verschijnt na het uitvoeren van de bovenstaande opdracht.
37. Knip alle regels af tot de eerste 80 tekens
Maak een tekstbestand met de naam in.txt die de regels van meer dan 80 tekens bevat om dit voorbeeld te testen.
in.txt
PHP is een server-side scripttaal.
PHP is een open-source taal en PHP is hoofdlettergevoelig. PHP is platformonafhankelijk.
Het volgende `sed` commando zal elke regel van . afkappen in.txt bestand in 80 tekens.
$sed 's/(^.{1,80}).*/1/'in.txt
Uitgang:
De volgende uitvoer verschijnt na het uitvoeren van de bovenstaande opdrachten. De tweede regel van het in.txt-bestand bevat meer dan 80 tekens en deze regel wordt in de uitvoer afgekapt.
38. Zoek naar een string-regex en voeg er wat standaardtekst aan toe
Het volgende `sed` commando zoekt in de tekst, ' Hallo ' in de invoertekst en voeg de tekst toe, ' John ’ achter die tekst.
$gooide uit 'Hallo hoe gaat het?' | sed 's/(hallo)/1 Jan/'Uitgang:
De volgende uitvoer verschijnt na het uitvoeren van de bovenstaande opdracht.
39. Zoek naar string-regex en voeg wat tekst toe na de tweede overeenkomst in elke regel
Het volgende `sed` commando zoekt in de tekst, ' PHP ' in elke regel van invoer.txt en vervang de tweede overeenkomst in elke regel door de tekst, 'Nieuwe tekst toegevoegd' .
$katinvoer.txt$sed 's/(PHP)/1 (Nieuwe tekst toegevoegd)/2'invoer.txt
Uitgang:
De volgende uitvoer verschijnt na het uitvoeren van de bovenstaande opdrachten. De zoektekst, ‘ PHP ’ verschijnt twee keer in de tweede en derde regel van invoer.txt het dossier. Dus de tekst, ' Nieuwe tekst toegevoegd ’ wordt ingevoegd in de tweede en derde regel.
40. Uitvoeren van meerregelige `sed`-scripts vanuit een bestand
Meerdere `sed`-scripts kunnen in een bestand worden opgeslagen en alle scripts kunnen samen worden uitgevoerd door het `sed`-commando uit te voeren. Maak een bestand met de naam 'sedcmd' ' en voeg de volgende inhoud toe. Hier worden twee `sed`-scripts aan het bestand toegevoegd. Eén script zal de tekst vervangen, ' PHP ' door 'ADDER ' een ander script zal de tekst vervangen, ' onafhankelijk ' bij de tekst, ' afhankelijk '.
sedcmd
s/PHP/ADDER/s/onafhankelijk/afhankelijk/
Het volgende `sed` commando zal alle 'PHP' en 'independent' tekst vervangen door 'ASP' en 'dependent'. Hier wordt de optie '-f' gebruikt in de opdracht 'sed' om het script 'sed' uit het bestand uit te voeren.
$katsedcmd$sed -Fsedcmd input.txt
Uitgang:
De volgende uitvoer verschijnt na het uitvoeren van bovenstaande opdrachten.
41. Overeenkomen met een patroon met meerdere regels en vervangen door nieuwe tekst met meerdere regels
Het volgende `sed`-commando doorzoekt de tekst met meerdere regels, 'Linux Android' en als het patroon overeenkomt, worden de overeenkomende regels vervangen door de tekst met meerdere regels, 'Ubuntu Android-lolly' ‘. Hier worden P en D gebruikt voor multiline-verwerking.
$katos.txt$sed '$!N;s/Linux Andoid/Ubuntu Andoid Lollipop/;P;D'os.txt
Uitgang:
De volgende uitvoer verschijnt na het uitvoeren van de bovenstaande opdrachten.
42. Vervang de volgorde van twee woorden in een tekst die overeenkomen met een patroon
Het volgende `sed`-commando neemt de invoer van twee woorden van het `echo`-commando en vervangt de volgorde van deze woorden.
$gooide uit 'perl-python' | sed -En 's/([^ ]*) *([^ ]*)/2 1/'Uitgang:
De volgende uitvoer verschijnt na het uitvoeren van de bovenstaande opdracht.
43. Voer meerdere `sed`-opdrachten uit vanaf de opdrachtregel
De optie ‘-e’ wordt gebruikt in de opdracht `sed` om meerdere `sed`-scripts uit te voeren vanaf de opdrachtregel. Het volgende `sed`-commando neemt een tekst als invoer van het `echo`-commando en vervangt ' Ubuntu ' door ' Kubuntu ' en ' honderden ' door ' Fedora '.
$gooide uit 'Ubuntu Centos Debian' | sed -En 's/Ubuntu/Kubuntu/; s/Centos/Fedora/'Uitgang:
De volgende uitvoer verschijnt na het uitvoeren van de bovenstaande opdracht. Hier worden 'Ubuntu' en 'Centos' vervangen door 'Kubuntu' en 'Fedora'.
44. Combineer `sed' met andere commando's
Het volgende commando zal het commando `sed` combineren met het commando `cat`. Het eerste `sed`-commando krijgt invoer van os.txt bestand en stuur de uitvoer van het commando naar het tweede `sed` commando na het vervangen van de tekst 'Linux' door 'Fedora'. De tweede opdracht `sed` zal de tekst ‘Windows’ vervangen door ‘Windows 10’.
$katos.txt| sed 's/Linux/Fedora/'| sed 's / windows / Windows 10 / i'Uitgang:
De volgende uitvoer verschijnt na het uitvoeren van de bovenstaande opdracht.
45. Lege regel in een bestand invoegen
Maak een bestand met de naam standaardlijst met de volgende inhoud.
standaardlijst
#ID #Naam[101] -Maar
[102] -Neha
De optie 'G' wordt gebruikt om een lege regel in een bestand in te voegen. Het volgende `sed` commando zal lege regels invoegen na elke regel van standaardlijst het dossier.
$katstandaardlijst$sedG standaardlijst
Uitgang:
De volgende uitvoer verschijnt na het uitvoeren van de bovenstaande opdrachten. Na elke regel van het bestand wordt een lege regel ingevoegd.
46. Vervang alle alfanumerieke tekens door spatie in elke regel van een bestand.
De volgende opdracht vervangt alle alfanumerieke tekens door spatie in de standaardlijst het dossier.
$katstandaardlijst$maar 's / [A-Za-z0-9] // g'standaardlijst
Uitgang:
De volgende uitvoer verschijnt na het uitvoeren van de bovenstaande opdrachten.
47. Gebruik '&' om overeenkomende tekenreeks af te drukken
De volgende opdracht zoekt naar het woord dat begint met 'L' en vervangt de tekst door toe te voegen 'Overeenkomende string is - ' met het overeenkomende woord door het '&'-symbool te gebruiken. Hier wordt 'p' gebruikt om de gewijzigde tekst af te drukken.
$sed -N 's/^L/Overeenkomende tekenreeks is - &/p'os.txtUitgang:
De volgende uitvoer verschijnt na het uitvoeren van de bovenstaande opdracht.
48. Wissel van woordpaar in een bestand
Maak een tekstbestand met de naam cursus.txt met de volgende inhoud die het paar woorden in elke regel bevat.
cursus.txt
PHP ASPMySQL-Oracle
CodeOntsteker Laravel
De volgende opdracht zal het paar woorden in elke regel van het bestand omwisselen, cursus.txt .
$sed 's/([^ ]*) *([^ ]*)/2 1/'cursus.txtUitgang:
De volgende uitvoer verschijnt na het wisselen van het woordpaar in elke regel.
49. Zet het eerste teken van elk woord met een hoofdletter
Het volgende `sed`-commando neemt de invoertekst van het `echo`-commando en converteert het eerste teken van elk woord naar een hoofdletter.
$gooide uit 'Ik hou van bash-programmeren' | sed 's / ([a-z] ) [[a-zA-Z0-9] * ) / u 1 2 / g'Uitgang:
De volgende uitvoer verschijnt na het uitvoeren van de bovenstaande opdracht. De invoertekst, I like bash-programmering, wordt afgedrukt als I Like Bash-programmering nadat het eerste woord met een hoofdletter is geschreven.
50. Regelnummers van het bestand afdrukken
'=' symbool wordt gebruikt `sed` commando om het regelnummer voor elke regel van een bestand af te drukken. Met de volgende opdracht wordt de inhoud van: os.txt bestand met regelnummer.
$sed '='os.txtUitgang:
De volgende uitvoer verschijnt na het uitvoeren van de bovenstaande opdracht. Er zijn vier regels in os.txt het dossier. Het regelnummer wordt dus vóór elke regel van het bestand afgedrukt.
Conclusie:
Verschillende toepassingen van het `sed` commando worden in deze tutorial uitgelegd aan de hand van zeer eenvoudige voorbeelden. De uitvoer van alle hier genoemde `sed'-scripts wordt tijdelijk gegenereerd en de inhoud van het originele bestand is ongewijzigd gebleven. Maar als u wilt, kunt u het originele bestand wijzigen door de -i of -in-place optie van het `sed-commando te gebruiken. Als je een nieuwe Linux-gebruiker bent en het basisgebruik van het `sed`-commando wilt leren om verschillende soorten stringmanipulatietaken uit te voeren, dan zal deze tutorial je helpen. Na het lezen van deze tutorial, hoop ik dat elke gebruiker het duidelijke concept begrijpt over de functies van het `sed` commando.
Veel Gestelde Vragen
Waar wordt het sed-commando voor gebruikt?
Het sed-commando heeft een aantal verschillende toepassingen. Dat gezegd hebbende, het belangrijkste gebruik is om woorden in een bestand te vervangen, of om te zoeken en te vervangen.
Het mooie van sed is dat je naar een woord in een bestand kunt zoeken en het kunt vervangen, maar je hoeft het bestand zelfs nooit te openen - sed doet het gewoon allemaal voor je!
Daarnaast kan het worden gebruikt voor verwijdering. Het enige dat u hoeft te doen, is het woord dat u wilt zoeken, vervangen of verwijderen in sed typen, en het brengt het voor u naar voren - u kunt er vervolgens voor kiezen om dat woord te vervangen of alle sporen van het woord uit uw bestand te verwijderen.
sed is een fantastische tool om zaken als IP-adressen en alles wat zeer gevoelig is, dat je anders niet in een bestand zou willen zetten, te vervangen. sed is een must-know voor elke software-engineer!
Wat is S en G in het sed-commando?
In de meest eenvoudige bewoordingen betekent de S-functie die in sed kan worden gebruikt eenvoudig 'vervanging'. Nadat u de S hebt getypt, kunt u alles wat u maar wilt vervangen of vervangen. Als u gewoon S typt, vervangt u alleen het eerste voorkomen van het woord op een regel.
Daarom, als je een zin of regel hebt die het meer dan eens vermeldt, is de S-functie niet ideaal omdat het alleen de eerste keer dat het voorkomt zal vervangen. U kunt een patroon specificeren om S ook om de twee keer woorden te laten vervangen.
Het specificeren van G aan het einde van het sed-commando zal een globale vervanging doen (daar staat de G voor). Met dit in gedachten, als u G opgeeft, vervangt deze elke keer dat het woord dat u hebt gekozen voorkomt, in plaats van alleen het eerste voorkomen dat de S doet.
Hoe voer ik een sed-script uit?
U kunt een sed-script op een aantal manieren uitvoeren, maar de meest voorkomende is op de opdrachtregel. Hier kunt u gewoon sed specificeren en het bestand waarop u de opdracht wilt gebruiken.
Hierdoor kunt u sed op dat bestand gebruiken, zodat u naar behoefte kunt zoeken, verwijderen en vervangen.
Je kunt het ook in een shellscript gebruiken, en op deze manier kun je alles wat je wilt doorgeven aan het script, en het zal de opdracht zoeken en vervangen voor je uitvoeren. Dit is handig als u geen zeer gevoelige gegevens in een script wilt specificeren, dus in plaats daarvan kunt u het als een variabele doorgeven
Houd er rekening mee dat dit natuurlijk alleen beschikbaar is op Linux, en dus moet je ervoor zorgen dat je een Linux-opdrachtregel hebt om je sed-script uit te voeren.