Udskiftningsopgaver kan udføres i Linux på forskellige måder. 'sed' kommando er en af måderne til at udføre udskiftningsopgaver. Denne kommando kan bruges til at erstatte tekst i en streng eller en fil ved hjælp af et andet mønster. Hvordan du kan erstatte alt efter det matchende mønster ved hjælp af kommandoen 'sed', vises i denne vejledning.
Udskift alt efter kampen i en streng:
Hvordan delen af en streng kan udskiftes baseret på et matchende mønster og $ PARTITION_COLUMN er vist i dette afsnit af denne vejledning. Men denne variabel fungerer, hvis mønsteret matcher et hvilket som helst ord i begyndelsen eller midten af strengen. Det erstatter ikke teksten, hvis mønsteret matcher det sidste ord i strengen.
Eksempel 1: Udskift alt efter kampen ved hjælp af $ PARTITION_COLUMN
Den følgende kommando søger i tegnet 'a', og den resterende del efter 'a' erstattes af teksten "et populært blog-site". $ PARTITION_COLUMN.* bruges til at definere den resterende del efter tegnet, 'a'.
$ echo "LinuxHint er et websted" | sed "s / a $ PARTITION_COLUMN.* / et populært blog-site / "Følgende output vises efter kørsel af kommandoen. Her er 'et websted' blevet erstattet af 'et populært blog-websted'.
Følgende mønster søger efter ordet 'web'I strengen og udskift den resterende del med'web'Ved teksten,'et populært blog-site'hvis kampen eksisterer og'web'Er ikke den del af strengens sidste ord.
Følgende output vises efter kørsel af kommandoen. Her er 'websted' det sidste ord i strengen, og der er ikke foretaget nogen udskiftning af denne grund.
Eksempel 2: Udskift alt efter match ved hjælp af mønster
Den følgende kommando søger efter ordet 'bash'globalt i strengen og udskift alt med ordet, hvis ordet findes i strengen. ''gBruges her til global søgning.
$ echo "Jeg kan godt lide bash-programmering" | sed "s / bash.* / python-script / g "Følgende output vises efter kørsel af kommandoen. Her findes 'bash' midt i strengen, og udskiftningen er udført.
Udskift alt efter kampen i en fil:
Alt indhold på en bestemt linje eller flere linjer eller resterende linjer i en fil efter kampen kan udskiftes ved hjælp af 'sedkommando. Opret en tekstfil med navnet tilstedeværelse.txt med følgende indhold for at teste eksemplerne vist i dette afsnit.
tilstedeværelse.txt
1108885 er til stede1999979 er til stede
1769994 er fraværende
1105656 er fraværende
1455999 er fraværende
Eksempel -3: Erstat alt indhold fra en linje i en fil efter kampen
Den følgende 'sed' kommando søger på nummeret 1769994 i filen, og alt med nummeret erstattes af teksten, '1586844 er til stede', hvis nummeret findes i en hvilken som helst linje i filen.
$ kat allendence.txt$ sed "s / 1769994.* / 1586844 er til stede / "fremmøde.txt
Følgende output vises med kommandoerne. Her findes søgenummeret i filens tredje linje, og udskiftningen er udført.
Eksempel -4: Erstat alt indhold fra de flere linjer i en fil efter kampen
Følgende kommando 'sed' viser brugen af variablen $ PARTITION_COLUMN til at erstatte flere linjer fra filen. Kommandoen søger '110' i starten af hver linje i filen og erstatter alt med '110' med teksten 'Ugyldig post', hvor den matchende tekst findes.
$ kattebesøg.txt$ sed "s / ^ 110.* $ PARTITION_COLUMN.* / Ugyldig adgang / "fremmøde.txt
Følgende output vises efter kørsel af kommandoerne. '110' findes i to linjer i filen, og disse er blevet erstattet af den erstatningstekst.
Eksempel 5: Udskift alt indhold fra en linje i en fil ved hjælp af 'c' efter kampen
Det følgende 'sed'kommando viser brugen af'c'at erstatte alt efter kampen. Her, 'c'angiver ændringen. Kommandoen søger efter ordet 'til stede'i filen og udskift alt på linjen med teksten,'Denne linje erstattes'hvis ordet findes i en hvilken som helst linje i filen.
$ kat tilstedeværelse.txt$ sed '/ nuværende / c Denne linje erstattes' deltagelse.txt
Følgende output vises efter kørsel af kommandoerne. Ordet 'nuværende' findes i de første to linjer i filen, og disse to linjer er blevet erstattet af den erstattende tekst.
Eksempel 6: Erstat alt indhold fra en linje i en fil baseret på start- og slutmønster
Nogle gange er det nødvendigt at udskifte tekst baseret på start- og slutmønsteret. Den følgende 'sed' kommando viser hvordan man definerer start- og slutmønstre for at erstatte linjer fra en fil. Kommandoen søger i disse linjer i filen, der starter med tallet 110 og slutter med ordet 'fraværende' og erstatter alt med ordet 'erstattet', hvor mønstrene matcher.
$ kattebesøg.txt$ sed -e 's / ^ 110.* fraværende $ / erstattet / g 'fremmøde.txt
Følgende output vises efter kørsel af kommandoerne. Her starter den første og den fjerde linje med tallet 110, men ordet 'fraværende' findes kun i den fjerde linje. Så den fjerde linje i filen er blevet erstattet af den erstattende tekst.
Konklusion:
'sed' kommando er et meget kraftfuldt værktøj fra Linux til at udføre forskellige typer tekstbehandlingsrelaterede opgaver. Udskiftningsopgaven baseret på det matchende mønster diskuteres i denne vejledning ved hjælp af forskellige typer mønstre i kommandoen 'sed'. $ PARTITION_COLUMN, 'c' og '.* 'bruges i denne vejledning til at erstatte alt i en linje i filen, hvor det matchende mønster findes. Brugen af nogle tegn med definerende mønstre er vist her, såsom '^' og '$'. Der findes mange andre tegn for at definere mønsteret i regulært udtryk til søgningsformål. Jeg håber, at denne tutorial hjælper læseren med at kende det grundlæggende ved at erstatte alt fra en fil efter kampen.