La sortida següent mostra que GNU Sed de la versió 4.4 està instal·lat al sistema.
Sintaxi:
sed [opcions]...[guió] [dossier]
Si no es proporciona cap nom de fitxer amb l'ordre `sed`, l'script funcionarà amb dades d'entrada estàndard. L'escript `sed` es pot executar sense cap opció.
Contingut :
- Substitució bàsica de text mitjançant 'sed'
- Substituïu totes les instàncies d'un text en una línia concreta d'un fitxer mitjançant l'opció 'g'
- Substitueix la segona ocurrència només d'un partit a cada línia
- Substitueix l'última ocurrència d'un partit a cada línia
- Substitueix la primera coincidència d'un fitxer per text nou
- Substituïu l'última coincidència d'un fitxer per text nou
- Escapar de la barra invertida a les ordres de substitució per gestionar la cerca i la substitució de camins de fitxers
- Substituïu la ruta completa de tots els fitxers pel nom de fitxer sense directori
- Substitueix el text però només si es troba algun altre text a la cadena
- Substitueix el text però només si no es troba cap altre text a la cadena
- Afegiu una cadena abans després del patró coincident amb ' 1 '
- Suprimiu les línies coincidents
- Suprimiu la línia coincident i 2 línies després de coincidir amb la línia
- Suprimiu tots els espais al final de la línia de text
- Suprimiu totes les línies que tinguin una coincidència dues vegades a la línia
- Suprimiu totes les línies que tinguin l'únic espai en blanc
- Suprimiu tots els caràcters que no es poden imprimir
- Si hi ha una coincidència a la línia, afegiu-hi alguna cosa al final de la línia
- Si hi ha un partit a la línia, inseriu la línia abans del partit
- Si hi ha un partit a la línia, inseriu la línia després del partit
- Si no hi ha cap coincidència, afegiu-hi alguna cosa al final de la línia
- Si no hi ha cap coincidència, suprimiu la línia
- Dupliqueu el text coincident després d'afegir un espai després del text
- Substitueix una de les llistes de cadenes per la nova
- Substitueix una cadena coincident per una cadena que conté línies noves
- Traieu les línies noves del fitxer i inseriu una coma al final de cada línia
- Traieu les comes i afegiu línies noves per dividir el text en diverses línies
- Cerqueu una coincidència que no distingeix entre majúscules i minúscules i suprimiu la línia
- Cerqueu una coincidència que no distingeix entre majúscules i minúscules i substituïu-la per un text nou
- Cerqueu una coincidència que no distingeix entre majúscules i minúscules i substituïu-la per totes les majúscules del mateix text
- Cerqueu una coincidència que no distingeix entre majúscules i minúscules i substituïu-la per totes les minúscules del mateix text
- Substituïu tots els caràcters en majúscules del text per minúscules
- Cerqueu el número a la línia i afegiu el símbol de moneda després del número
- Afegiu comes a números que tinguin més de 3 dígits
- Substitueix els caràcters de pestanya per 4 caràcters espaiadors
- Substitueix 4 caràcters espacials consecutius per un caràcter de tabulació
- Trunqueu totes les línies als primers 80 caràcters
- Cerqueu una regla regular de cadenes i afegiu-hi text estàndard
- Cerqueu una cadena regular i una segona còpia de la cadena trobada després
- Execució de scripts 'sed' de diverses línies des d'un fitxer
- Feu coincidir un patró de diverses línies i substituïu-lo per un text de diverses línies nou
- Substitueix l'ordre de dues paraules que coincideixin amb un patró
- Utilitzeu diverses ordres sed des de la línia d'ordres
- Combineu sed amb altres ordres
- Inseriu una línia buida en un fitxer
- Suprimiu tots els caràcters alfanumèrics de cada línia d'un fitxer.
- Utilitzeu '&' per fer coincidir la cadena
- Canvia el parell de paraules
- Escriviu amb majúscula el primer caràcter de cada paraula
- Imprimiu els números de línia del fitxer
1. Substitució bàsica de text mitjançant 'sed'
Es pot cercar i substituir qualsevol part particular d’un text mitjançant la cerca i la substitució del patró mitjançant l’ordre `sed`. A l’exemple següent, ‘s’ indica la tasca de cerca i substitució. Es buscarà la paraula 'Bash' al text, Bash Scripting Language i, si la paraula existeix al text, es substituirà per la paraula 'Perl'.
$trobo 'Llenguatge de seqüència d'ordres Bash' | sed 's / Bash / Perl /'
Sortida:
La paraula 'Bash' existeix al text. Per tant, la sortida és 'Llenguatge de seqüència de comandaments Perl'.
L'ordre `sed` també es pot utilitzar per substituir qualsevol part del contingut d'un fitxer. Creeu un fitxer de text anomenat dayday.txt amb el contingut següent.
dayday.txt
DillunsDimarts
Dimecres
Dijous
Divendres
Dissabte
Diumenge
L'ordre següent cercarà i substituirà el text 'Diumenge' pel text 'Diumenge és festiu'.
$gatdayday.txt$sed 's / Sunday / Sunday is holiday /'dayday.txt
Sortida:
'Diumenge' existeix al fitxer weekday.txt i aquesta paraula se substitueix pel text 'Diumenge és festiu' després d'executar l'ordre anterior 'sed'.
2. Substituïu totes les instàncies d’un text en una línia concreta d’un fitxer mitjançant l’opció ‘g’
L'opció 'g' s'utilitza a l'ordre 'sed' per substituir totes les ocurrències del patró coincident. Creeu un fitxer de text anomenat python.txt amb el contingut següent per conèixer l’ús de l’opció ‘g’. Aquest fitxer conté la paraula. 'Python' diverses vegades.
python.txt
Python és un llenguatge molt popular.
Python és fàcil d'utilitzar. Python és fàcil d'aprendre.
Python és un llenguatge multiplataforma
L'ordre següent substituirà totes les aparicions de ' Python 'A la segona línia del fitxer, python.txt . Aquí, 'Python' es produeix dues vegades a la segona línia.
$ gat pitó.txt$ sed'2 s / Python / perl / g'pitó.txt
Sortida:
La següent sortida apareixerà després d'executar l'script. Aquí, tota ocurrència de 'Python' a la segona línia se substitueix per 'Perl'.
3. Substituïu la segona ocurrència només d'un partit a cada línia
Si alguna paraula apareix diverses vegades en un fitxer, es pot substituir l'ocurrència particular de la paraula en cada línia mitjançant l'ordre `sed` amb el número d'ocurrència. La següent ordre `sed` substituirà la segona aparició del patró de cerca a cada línia del fitxer, python.txt .
$ sed's / Python / perl / g2'pitó.txtSortida:
La següent sortida apareixerà després d'executar l'ordre anterior. Aquí, el text de cerca: Python ' apareix dues vegades només a la segona línia i se substitueix pel text ' Perl '.
4. Substituïu l'última ocurrència d'un partit a cada línia
Creeu un fitxer de text anomenat lang.txt amb el contingut següent.
lang.txt
Llenguatge de programació Bash. Llenguatge de programació Python. Llenguatge de programació Perl.
Llenguatge de marcatge d’hipertext.
Llenguatge de marques extensible.
5. Substituïu la primera coincidència d'un fitxer per text nou
L'ordre següent substituirà només la primera coincidència del patró de cerca, ' Python 'Pel text, ‘Perl ‘. Aquí, '1' s'utilitza per fer coincidir la primera ocurrència del patró.
$ gat pitó.txt$ sed'1 s / Python / perl /'pitó.txt
Sortida:
La següent sortida apareixerà després d'executar les ordres anteriors. Aquí. la primera aparició de 'Python' a la primera línia se substitueix per 'perl'.
6. Substituïu l'última coincidència d'un fitxer per text nou
L'ordre següent substituirà l'última aparició del patró de cerca, ‘Python 'Pel text, ‘Bash’. Aquí, '$' El símbol s'utilitza per fer coincidir l'última aparició del patró.
$ gat pitó.txt$ sed -e'$ s / Python / Bash /'pitó.txt
Sortida:
La següent sortida apareixerà després d'executar les ordres anteriors.
7. Escapar de la barra invertida a les ordres de substitució per gestionar la cerca i la substitució de camins de fitxers
Cal escapar de la barra invertida del camí del fitxer per cercar-la i substituir-la. L'ordre següent de `sed` afegirà barra invertida () al camí del fitxer.
$trobo /a casa/ubuntu/codi/perl/add.pl| sed 's; /; \ /; g'Sortida:
El camí del fitxer, '/Home/ubuntu/code/perl/add.pl' es proporciona com a entrada a l'ordre `sed` i apareixerà la següent sortida després d'executar l'ordre anterior.
8. Substituïu la ruta completa de tots els fitxers pel nom de fitxer sense directori
El nom del fitxer es pot recuperar del camí del fitxer molt fàcilment utilitzant ` nom_bas ' comandament. L'ordre `sed` també es pot utilitzar per recuperar el nom del fitxer del camí del fitxer. L'ordre següent recuperarà el nom del fitxer només del camí del fitxer proporcionat per l'ordre `echo`.
$trobo '/Home/ubuntu/temp/myfile.txt' | sed 's /.*///'Sortida:
La següent sortida apareixerà després d'executar l'ordre anterior. Aquí, el nom del fitxer, ‘ myfile.txt ' s'imprimeix com a sortida.
9. Substitueix el text però només si es troba algun altre text a la cadena
Creeu un fitxer anomenat ' dept.txt ' amb el contingut següent per substituir qualsevol text basat en un altre text.
dept.txt
Llista d'estudiants totals:
CSE: recompteEEE: recompte
Civil - Comte
S'utilitzen dues ordres de substitució a la següent ordre `sed`. Aquí, el text: Compta 'Serà substituït per 100 a la línia que conté el text, ‘CSE 'I el text,' Compta serà substituït per 70 a la línia que conté el patró de cerca, ' EEE » .
$gatdept.txt$sed -I '/ CSE / s / Count / 100 /; / EEE / s / Recompte / 70 /; 'dept.txt
Sortida:
La següent sortida apareixerà després d'executar les ordres anteriors.
10. Substitueix el text però només si no es troba cap altre text a la cadena
La següent ordre 'sed' substituirà el valor 'Recompte' de la línia que no conté el text, 'CSE'. dept.txt El fitxer conté dues línies que no contenen el text, 'CSE'. Doncs el ' Compta ‘Text serà substituït per 80 en dues línies.
$gatdept.txt$sed -i -I '/ CSE /! s / Recompte / 80 /; 'dept.txt
Sortida:
La següent sortida apareixerà després d'executar les ordres anteriors.
11. Afegiu una cadena abans i després del patró de coincidència amb ' 1'
La seqüència de patrons coincidents de l’ordre «sed» es denota amb « 1», « 2», etc. La següent ordre 'sed' buscarà el patró, 'Bash' i, si el patró coincideix, s'accedirà amb ' 1' a la part de la substitució del text. Aquí es busca el text 'Bash' al text d'entrada i s'afegeix un text abans i un altre després de ' 1'.
$trobo 'Idioma basc' | sed 's / (Bash ) / Aprendre 1 programació /'Sortida:
La següent sortida apareixerà després d'executar l'ordre anterior. Aquí, ‘ Aprendre abans s’afegeix text 'Bash' i ' programació 'Text s'afegeix després de' Bash ’.
12. Suprimiu les línies coincidents
'D' L'opció s'utilitza a l'ordre `sed` per esborrar qualsevol línia del fitxer. Creeu un fitxer anomenat os.txt i afegiu el contingut següent per provar la funció de 'D' opció.
cat os.txt
WindowsLinux
Android
VOSTÈ
La següent ordre `sed` suprimirà aquestes línies de os.txt fitxer que conté el text, 'SO'.
$gatos.txt$sed '/ La D'os.txt
Sortida:
La següent sortida apareixerà després d'executar les ordres anteriors.
13. Esborreu la línia coincident i 2 línies després de coincidir amb la línia
L'ordre següent suprimirà tres línies del fitxer os.txt si el patró, Linux ” és trobat. os.txt conté el text, ‘Linux ‘A la segona línia. Per tant, aquesta línia i les dues línies següents se suprimiran.
$sed '/ Linux /, + 2d'os.txtSortida:
La següent sortida apareixerà després d'executar l'ordre anterior.
14. Esborreu tots els espais al final de la línia de text
Utilitzant [:en blanc:] class es pot utilitzar per eliminar espais i pestanyes del text o del contingut de qualsevol fitxer. L'ordre següent eliminarà els espais al final de cada línia del fitxer, os.txt.
$gatos.txt$sed 's / [[: blank:]] * $ //'os.txt
Sortida:
os.txt conté línies buides després de cada línia, les que s'esborren amb l'ordre anterior 'sed'.
15. Esborreu totes les línies que tinguin una coincidència dues vegades a la línia
Creeu un fitxer de text anomenat, input.txt amb el contingut següent i suprimiu dues vegades les línies del fitxer que conté el patró de cerca.
input.txt
PHP és un llenguatge de seqüència d’ordres del servidor.
PHP és un llenguatge de codi obert i PHP distingeix entre majúscules i minúscules.
PHP és independent de la plataforma.
El text 'PHP' conté dues vegades a la segona línia del fitxer, input.txt . En aquest exemple s’utilitzen dues ordres `sed` per eliminar les línies que contenen el patró‘ php ' dues vegades. La primera ordre 'sed' substituirà la segona aparició de 'php' a cada línia per ' dl ‘I envieu la sortida al segon ordre` sed` com a entrada. La segona ordre 'sed' suprimirà les línies que contenen el text, ' dl '.
$gatinput.txt$sed 's / php / dl / i2; t'input.txt| sed '/ dl / d'
Sortida:
input.txt el fitxer té dues línies que contenen el patró, 'Php' dues vegades. Per tant, apareixerà la següent sortida després d’executar les ordres anteriors.
16. Esborreu totes les línies que només tinguin espais en blanc
Seleccioneu qualsevol fitxer que contingui línies buides al contingut per provar aquest exemple. input.txt que es crea a l'exemple anterior, conté dues línies buides que es poden esborrar mitjançant l'ordre següent 'sed'. Aquí s’utilitza ‘^ $’ per esbrinar les línies buides del fitxer, input.txt.
$gatinput.txt$sed '/ ^ $ / d'input.txt
Sortida:
La següent sortida apareixerà després d'executar les ordres anteriors.
17. Esborreu tots els caràcters que no es poden imprimir
Els caràcters no imprimibles es poden suprimir de qualsevol text substituint els caràcters no imprimibles per cap. La classe [: print:] s'utilitza en aquest exemple per esbrinar els caràcters que no es poden imprimir. ' T' és un caràcter que no es pot imprimir i no es pot analitzar directament amb l'ordre 'echo'. Per a això, el caràcter ' t' s'assigna en una variable, una pestanya $ que s'utilitza en una ordre 'echo'. La sortida de l'ordre `echo` s'envia a l'ordre` sed` que eliminarà el caràcter ' t' de la sortida.
$fitxa= $' t'$trobo 'Hola$ tabWorld'
$trobo 'Hola$ tabWorld' | sed 's / [^ [: print:]] // g'
Sortida:
La següent sortida apareixerà després d'executar les ordres anteriors. La primera ordre `echo imprimirà la sortida amb espai de tabulació i l'ordre` sed` imprimirà la sortida després d'eliminar l'espai de tabulació.
18. Si hi ha un partit en línia, afegiu-hi alguna cosa al final de la línia
L'ordre següent afegirà '10' al final de la línia que conté el text, 'Windows' al fitxer os.txt dossier.
$gatos.txt$sed '/ Windows / s / $ / 10 /'os.txt
Sortida:
La següent sortida apareixerà després d'executar l'ordre.
19. Si hi ha coincidències a la línia, inseriu una línia abans del text
La següent ordre `sed` cercarà el text: PHP és independent de la plataforma ” al input.txt que s'ha creat abans. Si el fitxer conté aquest text en qualsevol línia, llavors ' PHP és un llenguatge interpretat ” s'inserirà abans d'aquesta línia.
$gatinput.txt$sed '/ PHP és independent de la plataforma / s / ^ / PHP és un llenguatge interpretat. N /'input.txt
Sortida:
La següent sortida apareixerà després d'executar les ordres anteriors.
20. Si hi ha coincidència a la línia, inseriu una línia després d’aquesta
La següent ordre `sed` cercarà el text: Linux ” al fitxer os.txt i si el text existeix en alguna línia, hi haurà un text nou: Ubuntu 'S'inserirà després d'aquesta línia.
$gatos.txt$sed 's / Linux / & nUbuntu /'os.txt
Sortida:
La següent sortida apareixerà després d'executar les ordres anteriors.
21. Si no hi ha cap coincidència, afegiu-hi alguna cosa al final de la línia
La següent ordre `sed` cercarà aquestes línies os.txt que no contingui el text, 'Linux' i afegiu el text: Sistema operatiu ‘Al final de cada línia. Aquí, ‘ $ 'Símbol s'utilitza per identificar la línia on s'afegirà el text nou.
$gatos.txt$sed '/ Linux /! S / $ / Sistema operatiu / 'os.txt
Sortida:
La següent sortida apareixerà després d'executar les ordres anteriors. Al fitxer os.txt hi ha tres línies que no contenen el text, ‘Linux’ i el nou text afegit al final d’aquestes línies.
22. Si no hi ha cap coincidència, elimineu la línia
Creeu un fitxer anomenat web.txt i afegiu el contingut següent i suprimiu les línies que no continguin el patró de coincidència. web.txt HTML 5JavaScriptCSSPHPMySQLJQuery La següent ordre `sed` cercarà i suprimirà aquelles línies que no contenen el text,‘ CSS ’. $ cat web.txt $ sed ‘/ CSS /! d’ web.txt Sortida: La següent sortida apareixerà després d'executar les ordres anteriors. Hi ha una línia al fitxer que conté el text, 'CSE'. Per tant, la sortida conté només una línia.
23. Dupliqueu el text coincident després d'afegir un espai després del text
L'ordre següent 'sed' cercarà la paraula 'a' al fitxer, python.txt i si la paraula existeix, s'inserirà la mateixa paraula després de la paraula de cerca afegint espai. Aquí, '&' El símbol s'utilitza per afegir el text duplicat.
$gatpython.txt$sed -I 's / to / & to / g'python.txt
Sortida:
La sortida següent apareixerà després d'executar les ordres. Aquí es cerca la paraula 'a' al fitxer, python.txt i aquesta paraula existeix a la segona línia d'aquest fitxer. Tan, ‘A ’Amb espai s’afegeix després del text coincident.
24. Substituïu una llista de cadenes per la nova
Heu de crear dos fitxers de llista per provar aquest exemple. Creeu un fitxer de text anomenat llista1.txt i afegiu el contingut següent.
cat list1.txt
1001=>Jafar Ali1023=>Nir Hossain
1067=>John Michel
Creeu un fitxer de text anomenat llista2.txt i afegiu el contingut següent.
$ cat list2.txt
1001CSE GPA3.631002CSE GPA3.24
1023CSE GPA3.11
1067CSE GPA3.84
L'ordre següent 'sed' coincidirà amb la primera columna dels dos fitxers de text que es mostren a sobre i substituirà el text que coincideixi amb el valor de la tercera columna del fitxer llista1.txt.
$gatllista1.txt$gatllista2.txt
$sed `gatllista1.txt| awk '{print' -e s / '$ 1' / '$ 3' / '}'`<<<'`cat list2.txt`'
Sortida:
1001, 1023 i 1067 de llista1.txt coincideix amb les tres dades de llista2.txt i aquests valors se substitueixen pels noms corresponents de la tercera columna de llista1.txt .
25. Substituïu la cadena coincident per una cadena que conté línies noves
L'ordre següent prendrà l'entrada de l'ordre `echo` i cercarà la paraula, 'Python' al text. Si la paraula existeix al text, hi ha un text nou, 'Text afegit' s'inserirà amb línia nova. $ echo Bash Perl Python Java PHP ASP | sed 's / Python / Text afegit n /' Sortida: La següent sortida apareixerà després d'executar l'ordre anterior.
26. Traieu les línies noves del fitxer i inseriu una coma al final de cada línia
La següent ordre `sed` substituirà cada línia nova per una coma al fitxer os.txt . Aquí, -Amb l'opció s'utilitza per separar la línia pel caràcter NULL.
$sed -Amb 's / n /, / g'os.txtSortida:
La següent sortida apareixerà després d'executar l'ordre anterior.
27. Elimineu les comes i afegiu una línia nova per dividir el text en diverses línies
La següent ordre `sed` agafarà la línia separada per comes de l'ordre` echo` com a entrada i substituirà la coma per una línia nova.
$trobo 'Kaniz Fatema, 30è, per lots' | sed 's /, / n/ g 'Sortida:
La següent sortida apareixerà després d'executar l'ordre anterior. El text d’entrada conté tres dades separades per comes que se substitueixen per una nova línia i s’imprimeixen en tres línies.
28. Cerqueu una coincidència que no distingeix entre majúscules i minúscules i suprimiu la línia
'I' s'utilitza a l'ordre 'sed' per a la coincidència que distingeix entre majúscules i minúscules que indica ignorar majúscules i minúscules. La següent ordre `sed` cercarà la línia que conté la paraula, ‘Linux ‘I suprimiu la línia de os.txt dossier.
$gatos.txt$sed '/ linux / Id'os.txt
Sortida:
La següent sortida apareixerà després d'executar l'ordre anterior. os.txt conté la paraula 'Linux' que coincideix amb el patró, 'linux' per a la cerca que no distingeix entre majúscules i minúscules i suprimida.
29. Cerqueu una coincidència que no distingeix entre majúscules i minúscules i substituïu-la per un text nou
La següent ordre 'sed' prendrà l'entrada de l'ordre 'echo' i substituirà la paraula 'bash' per la paraula 'PHP'.
$trobo 'M'agrada la programació bash' | sed 's / Bash / PHP / i'Sortida:
La següent sortida apareixerà després d'executar l'ordre anterior. Aquí, la paraula 'Bash' coincidia amb la paraula 'bash' per a la cerca que no distingeix entre majúscules i minúscules i substituïda per la paraula 'PHP'.
30. Cerqueu una coincidència que no distingeix entre majúscules i minúscules i substituïu-la per totes les majúscules del mateix text
' U' s'utilitza a `sed` per convertir qualsevol text a majúscula. La següent ordre `sed` cercarà la paraula, ‘Linux ‘A la os.txt i si la paraula existeix, substituirà la paraula per totes les majúscules.
$gatos.txt$sed 's / (linux ) / U 1 / Ig'os.txt
Sortida:
La següent sortida apareixerà després d'executar les ordres anteriors. La paraula 'Linux' del fitxer os.txt se substitueix per la paraula 'LINUX'.
31. Cerqueu una coincidència que no distingeix entre majúscules i minúscules i substituïu-la per totes les minúscules del mateix text
' THE' s'utilitza a `sed` per convertir qualsevol text a totes les minúscules. La següent ordre `sed` cercarà la paraula, 'Linux' al os.txt arxivar i substituir la paraula per totes les minúscules.
$gatos.txt$sed 's / (linux ) / L 1 / Ig'os.txt
Sortida:
La següent sortida apareixerà després d'executar les ordres anteriors. Aquí es substitueix la paraula 'Linux' per la paraula 'linux'.
32. Substituïu tots els caràcters majúscules del text per minúscules
La següent ordre `sed` cercarà tots els caràcters majúscules del fitxer os.txt fitxer i substituïu els caràcters per minúscules mitjançant ' L'.
$gatos.txt$sed 's / (. * ) / L 1 /'os.txt
Sortida:
La següent sortida apareixerà després d'executar les ordres anteriors.
33. Cerqueu el número a la línia i afegiu qualsevol símbol de moneda abans de número
Creeu un fitxer anomenat articles.txt amb el contingut següent.
articles.txt
Disc dur 100Monitor 80
Ratolí 10
La següent ordre `sed` cercarà el número de cada línia de articles.txt fitxer i afegir el símbol de moneda, '$' abans de cada número.
$gatarticles.txt$sed 's / ([0-9] ) / $ 1 / g'articles.txt
Sortida:
La següent sortida apareixerà després d'executar les ordres anteriors. Aquí s’afegeix el símbol ‘$’ abans del número de cada línia.
34. Afegiu comes a números que tinguin més de 3 dígits
La següent ordre `sed` agafarà un número com a entrada de l'ordre` echo` i afegirà comes després de cada grup de tres dígits comptant des de la dreta. Aquí, ‘: a’ indica l’etiqueta i s’utilitza ‘ta’ per iterar el procés d’agrupació.
$trobo '5098673' | sed -I: a-I 's / (. * [0-9] ) ([0-9] {3 } ) / 1, 2 /; ta'Sortida:
El número 5098673 es dóna a l'ordre `echo` i l'ordre` sed` va generar el número 5.098.673 afegint una coma després de cada grup de tres dígits.
35. Substitueix el caràcter de pestanya per 4 caràcters espacials
La següent ordre `sed` substituirà cada caràcter de tabulació ( t) per quatre caràcters espacials. El símbol '$' s'utilitza a l'ordre 'sed' per coincidir amb el caràcter de tabulació i 'g' s'utilitza per substituir tots els caràcters de tabulació.
$trobo -I '1 t2 t3 ' | sed$'s / t / / g'Sortida:
La següent sortida apareixerà després d'executar l'ordre anterior.
36. Substitueix 4 caràcters espacials consecutius per caràcters de tabulació
L'ordre següent substituirà 4 caràcters consecutius per caràcter tabulador ( t).
$trobo -I '1.- 2' | sed$'s / / t / g'Sortida:
La següent sortida apareixerà després d'executar l'ordre anterior.
37. Trunqueu totes les línies als primers 80 caràcters
Creeu un fitxer de text anomenat in.txt que conté les línies de més de 80 caràcters per provar aquest exemple.
in.txt
PHP és un llenguatge de seqüència d’ordres del servidor.
PHP és un llenguatge de codi obert i PHP distingeix entre majúscules i minúscules. PHP és independent de la plataforma.
La següent ordre `sed` truncarà cada línia de in.txt fitxer en 80 caràcters.
$sed 's / (^. {1,80 } ). * / 1 /'in.txt
Sortida:
La següent sortida apareixerà després d'executar les ordres anteriors. La segona línia del fitxer in.txt conté més de 80 caràcters i aquesta línia es trunca a la sortida.
38. Cerqueu una regla regular i afegiu-hi text estàndard
La següent ordre `sed` cercarà el text: Hola 'Al text d'entrada i afegiu el text,' Joan ‘Després d’aquest text.
$trobo 'Hola com estàs?' | sed 's / (hola ) / 1 John /'Sortida:
La següent sortida apareixerà després d'executar l'ordre anterior.
39. Cerqueu una cadena regular i afegiu text després de la segona coincidència de cada línia
La següent ordre `sed` cercarà el text: PHP 'En cada línia de input.txt i substituïu la segona coincidència de cada línia pel text, 'Nou text afegit' .
$gatinput.txt$sed 's / (PHP ) / 1 (text nou afegit) / 2'input.txt
Sortida:
La següent sortida apareixerà després d'executar les ordres anteriors. El text de cerca: PHP 'Apareix dues vegades a la segona i tercera línia de input.txt dossier. Per tant, el text: S'ha afegit un text nou ’S’insereix a la segona i tercera línia.
40. Execució de seqüències múltiples 'sed` des d'un fitxer
Es poden emmagatzemar diversos scripts 'sed` en un fitxer i tots els scripts es poden executar junts executant l'ordre `sed`. Creeu un fitxer anomenat ‘Sedcmd ‘I afegiu el contingut següent. Aquí s'afegeixen dos scripts 'sed' al fitxer. Un script substituirà el text: PHP 'Per ‘ASP 'Un altre script substituirà el text,' independent 'Pel text,' dependent '.
sedcmd
s/PHP/ASP/s/independent/dependent/
La següent ordre 'sed' substituirà tot el text 'PHP' i 'independent' per 'ASP' i 'dependent'. Aquí, l'opció '-f' s'utilitza a l'ordre `sed` per executar l'script` sed` des del fitxer.
$gatsedcmd$sed -fsedcmd input.txt
Sortida:
La següent sortida apareixerà després d'executar les ordres anteriors.
41. Feu coincidir un patró de diverses línies i substituïu-lo per un text de diverses línies nou
La següent ordre `sed` cercarà el text de diverses línies, 'Linux nAndroid' i si el patró coincideix, les línies coincidents seran substituïdes pel text de diverses línies, ‘Ubuntu nAndroid Lollipop ‘. Aquí, P i D s’utilitzen per al processament multilínia.
$gatos.txt$sed '$! N; s / Linux nAndoid / Ubuntu nAndoid Lollipop /; P; D'os.txt
Sortida:
La següent sortida apareixerà després d'executar les ordres anteriors.
42. Substitueix l’ordre de dues paraules d’un text que coincideixin amb un patró
La següent ordre `sed` agafarà l'entrada de dues paraules de l'ordre` echo` i substituirà l'ordre d'aquestes paraules.
$trobo 'perl python' | sed -I 's / ([^] * ) * ([^] * ) / 2 1 /'Sortida:
La següent sortida apareixerà després d'executar l'ordre anterior.
43. Executeu diverses ordres 'sed' des de la línia d'ordres
L'opció '-e' s'utilitza a l'ordre 'sed' per executar diversos scripts 'sed' des de la línia d'ordres. La següent ordre 'sed' agafarà un text com a entrada de l'ordre 'echo' i substituirà ' Ubuntu 'Per' Kubuntu 'I' centenars 'Per' Fedora '.
$trobo 'Ubuntu Centos Debian' | sed -I 's / Ubuntu / Kubuntu /; s / Centos / Fedora / 'Sortida:
La següent sortida apareixerà després d'executar l'ordre anterior. Aquí, ‘Ubuntu’ i ‘Centos’ se substitueixen per ‘Kubuntu’ i ‘Fedora’.
44. Combineu `sed` amb altres ordres
L'ordre següent combinarà l'ordre `sed` amb l'ordre` cat`. La primera ordre 'sed' prendrà l'entrada de os.txt arxiu i envieu la sortida de l'ordre a la segona ordre 'sed' després de substituir el text 'Linux' per 'Fedora'. La segona ordre 'sed' substituirà el text, 'Windows' per 'Windows 10'.
$gatos.txt| sed 's / Linux / Fedora /'| sed 's / windows / Windows 10 / i'Sortida:
La següent sortida apareixerà després d'executar l'ordre anterior.
45. Inseriu una línia buida en un fitxer
Creeu un fitxer anomenat stdlist amb el contingut següent.
stdlist
#ID #Nom[101] -Però
[102] -Neha
L’opció ‘G’ s’utilitza per inserir una línia buida en un fitxer. La següent ordre `sed` inserirà línies buides després de cada línia de stdlist dossier.
$gatstdlist$sedLlista de pautes
Sortida:
La següent sortida apareixerà després d'executar les ordres anteriors. S'insereix una línia buida després de cada línia del fitxer.
46. Substituïu tots els caràcters alfanumèrics per espai a cada línia d'un fitxer.
La següent ordre reemplaçarà tots els caràcters alfanumèrics per espai al fitxer stdlist dossier.
$gatstdlist$ però 's / [A-Za-z0-9] // g'stdlist
Sortida:
La següent sortida apareixerà després d'executar les ordres anteriors.
47. Utilitzeu '&' per imprimir una cadena coincident
L'ordre següent cercarà la paraula que comença per 'L' i substituirà el text afegint 'La cadena coincident és - 'Amb la paraula coincident mitjançant el símbol' & '. Aquí s’utilitza ‘p’ per imprimir el text modificat.
$sed -n 's / ^ L / la cadena coincident és - & / p'os.txtSortida:
La següent sortida apareixerà després d'executar l'ordre anterior.
48. Canvieu el parell de paraules en un fitxer
Creeu un fitxer de text anomenat curs.txt amb el contingut següent que conté el parell de paraules de cada línia.
curs.txt
PHP ASPMySQL Oracle
CodeIgniter Laravel
L'ordre següent canviarà el parell de paraules de cada línia del fitxer, curs.txt .
$sed 's / ([^] * ) * ([^] * ) / 2 1 /'curs.txtSortida:
La següent sortida apareixerà després de canviar el parell de paraules de cada línia.
49. Escriviu amb majúscula el primer caràcter de cada paraula
La següent ordre `sed` agafarà text d'entrada de l'ordre` echo` i convertirà el primer caràcter de cada paraula en majúscula.
$trobo 'M'agrada la programació bash' | sed 's / ([a-z] ) [[a-zA-Z0-9] * ) / u 1 2 / g'Sortida:
La següent sortida apareixerà després d'executar l'ordre anterior. El text d’entrada, M’agrada la programació bash, s’imprimeix com M’agrada la programació Bash després de posar en majúscula la primera paraula.
50. Imprimiu els números de línia del fitxer
El símbol '=' s'utilitza per a imprimir el número de línia abans de cada línia d'un fitxer. L'ordre següent imprimirà el contingut de os.txt fitxer amb número de línia.
$sed '='os.txtSortida:
La següent sortida apareixerà després d'executar l'ordre anterior. Hi ha quatre línies os.txt dossier. Per tant, el número de línia s’imprimeix abans de cada línia del fitxer.
Conclusió:
En aquest tutorial s’expliquen els diferents usos de l’ordre `sed` mitjançant exemples molt senzills. La sortida de tots els scripts 'sed' esmentats aquí es genera temporalment i el contingut del fitxer original es manté sense canvis. Però si voleu, podeu modificar el fitxer original mitjançant l'opció –i o –in-place de l'ordre `sed. Si sou un usuari nou de Linux i voleu aprendre els usos bàsics de l'ordre `sed` per realitzar diversos tipus de tasques de manipulació de cadenes, aquest tutorial us ajudarà. Després de llegir aquest tutorial, espero que qualsevol usuari obtingui el concepte clar sobre les funcions de l'ordre `sed`.
Preguntes freqüents
Per a què s’utilitza l’ordre sed?
L'ordre sed té diversos usos. Dit això, l'ús principal és substituir paraules en un fitxer o trobar i substituir.
El millor de sed és que podeu cercar una paraula en un fitxer i substituir-la, però ni tan sols heu d’obrir-lo, sed ho fa tot per vosaltres.
A més d'això, es pot utilitzar per suprimir-lo. Tot el que heu de fer és escriure la paraula que vulgueu trobar, reemplaçar o suprimir en sed, i us la mostrarà; podeu triar substituir aquesta paraula o suprimir totes les traces de la paraula del fitxer.
sed és una eina fantàstica per poder substituir coses com adreces IP i qualsevol cosa que sigui altament sensible i que no voldríeu introduir en un fitxer. sed és imprescindible per a qualsevol enginyer de programari.
Què és el comandament S i G?
En els seus termes més senzills, la funció S que es pot utilitzar en sed significa simplement 'substitut'. Després d'escriure el S, podeu substituir o substituir qualsevol cosa que vulgueu; només escriviu S només substituirà la primera ocurrència de la paraula en una línia.
Per tant, si teniu una frase o línia que l’esmenta més d’una vegada, la funció S no és ideal, ja que només substituirà la primera ocurrència. Podeu especificar un patró per fer que S substitueixi les paraules també cada dues ocurrències.
Especificar G al final de l'ordre sed farà una substitució global (això és el que significa G). Amb això en ment, si especifiqueu G, substituirà cada ocurrència de la paraula que hàgiu triat, en lloc de només la primera ocurrència que fa la S.
Com puc executar un script sed?
Podeu executar un script sed de diverses maneres, però el més habitual és a la línia d'ordres. Aquí només podeu especificar sed i el fitxer en què voleu utilitzar l'ordre.
Això us permet utilitzar sed en aquest fitxer, cosa que us permetrà cercar, suprimir i substituir segons sigui necessari.
També podeu utilitzar-lo en un script d’intèrpret d’ordres, i d’aquesta manera podeu passar el que vulgueu a l’escript, i executarà l’ordre find and replace per a vosaltres. Això és útil per no voler especificar dades altament sensibles dins d'un script, de manera que podeu passar-les com a variable
Tingueu en compte que, per descomptat, això només està disponible a Linux i, per tant, haureu d'assegurar-vos que teniu una línia d'ordres de Linux per executar el vostre script sed.