50 `però` Exemples d'ordres

50 Sed Command Examples



`sed` és una útil funció de processament de text de GNU / Linux. La forma completa de 'sed' és Stream Editor. Molts tipus de tasques de processament de text senzilles i complicades es poden fer molt fàcilment mitjançant l'ordre `sed`. Es pot cercar, reemplaçar i eliminar qualsevol cadena particular d'un text o d'un fitxer mitjançant l'expressió regular amb l'ordre `sed. Però aquestes ordres realitzen temporalment tot tipus de modificacions i el contingut del fitxer original no es modifica per defecte. Si ho necessita, l'usuari pot emmagatzemar el contingut modificat en un altre fitxer. Els usos bàsics de l'ordre `sed` s'expliquen en aquest tutorial mitjançant 50 exemples únics. Abans de començar aquest tutorial, heu de comprovar la versió instal·lada de` sed` al vostre sistema operatiu executant l'ordre següent. El tutorial està dissenyat basat en GNU sed. Per tant, aquesta versió de `sed` serà necessària per practicar els exemples mostrats en aquest tutorial.

$sed --versió

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 :

  1. Substitució bàsica de text mitjançant 'sed'
  2. Substituïu totes les instàncies d'un text en una línia concreta d'un fitxer mitjançant l'opció 'g'
  3. Substitueix la segona ocurrència només d'un partit a cada línia
  4. Substitueix l'última ocurrència d'un partit a cada línia
  5. Substitueix la primera coincidència d'un fitxer per text nou
  6. Substituïu l'última coincidència d'un fitxer per text nou
  7. Escapar de la barra invertida a les ordres de substitució per gestionar la cerca i la substitució de camins de fitxers
  8. Substituïu la ruta completa de tots els fitxers pel nom de fitxer sense directori
  9. Substitueix el text però només si es troba algun altre text a la cadena
  10. Substitueix el text però només si no es troba cap altre text a la cadena
  11. Afegiu una cadena abans després del patró coincident amb ' 1 '
  12. Suprimiu les línies coincidents
  13. Suprimiu la línia coincident i 2 línies després de coincidir amb la línia
  14. Suprimiu tots els espais al final de la línia de text
  15. Suprimiu totes les línies que tinguin una coincidència dues vegades a la línia
  16. Suprimiu totes les línies que tinguin l'únic espai en blanc
  17. Suprimiu tots els caràcters que no es poden imprimir
  18. Si hi ha una coincidència a la línia, afegiu-hi alguna cosa al final de la línia
  19. Si hi ha un partit a la línia, inseriu la línia abans del partit
  20. Si hi ha un partit a la línia, inseriu la línia després del partit
  21. Si no hi ha cap coincidència, afegiu-hi alguna cosa al final de la línia
  22. Si no hi ha cap coincidència, suprimiu la línia
  23. Dupliqueu el text coincident després d'afegir un espai després del text
  24. Substitueix una de les llistes de cadenes per la nova
  25. Substitueix una cadena coincident per una cadena que conté línies noves
  26. Traieu les línies noves del fitxer i inseriu una coma al final de cada línia
  27. Traieu les comes i afegiu línies noves per dividir el text en diverses línies
  28. Cerqueu una coincidència que no distingeix entre majúscules i minúscules i suprimiu la línia
  29. Cerqueu una coincidència que no distingeix entre majúscules i minúscules i substituïu-la per un text nou
  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
  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
  32. Substituïu tots els caràcters en majúscules del text per minúscules
  33. Cerqueu el número a la línia i afegiu el símbol de moneda després del número
  34. Afegiu comes a números que tinguin més de 3 dígits
  35. Substitueix els caràcters de pestanya per 4 caràcters espaiadors
  36. Substitueix 4 caràcters espacials consecutius per un caràcter de tabulació
  37. Trunqueu totes les línies als primers 80 caràcters
  38. Cerqueu una regla regular de cadenes i afegiu-hi text estàndard
  39. Cerqueu una cadena regular i una segona còpia de la cadena trobada després
  40. Execució de scripts 'sed' de diverses línies des d'un fitxer
  41. Feu coincidir un patró de diverses línies i substituïu-lo per un text de diverses línies nou
  42. Substitueix l'ordre de dues paraules que coincideixin amb un patró
  43. Utilitzeu diverses ordres sed des de la línia d'ordres
  44. Combineu sed amb altres ordres
  45. Inseriu una línia buida en un fitxer
  46. Suprimiu tots els caràcters alfanumèrics de cada línia d'un fitxer.
  47. Utilitzeu '&' per fer coincidir la cadena
  48. Canvia el parell de paraules
  49. Escriviu amb majúscula el primer caràcter de cada paraula
  50. 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

Dilluns
Dimarts
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'.

Ves a dalt

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

Ves a dalt

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ó.txt

Sortida:

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

Ves a dalt

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.

$sed 's / (. * ) Programació / 1 Scripting /'lang.txt

Ves a dalt

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

Ves a dalt

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.

Ves a dalt

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.

Ves a dalt

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.

Ves a dalt

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: recompte
EEE: 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.

Ves a dalt

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.

Ves a dalt

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

Ves a dalt

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

Windows
Linux
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.

Ves a dalt

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

Sortida:

La següent sortida apareixerà després d'executar l'ordre anterior.

Ves a dalt

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

Ves a dalt

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.

Ves a dalt

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.

Ves a dalt

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

Ves a dalt

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.

Ves a dalt

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.

Ves a dalt

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.

Ves a dalt

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.

Ves a dalt

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.

Ves a dalt

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.

Ves a dalt

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 Ali
1023=>Nir Hossain
1067=>John Michel

Creeu un fitxer de text anomenat llista2.txt i afegiu el contingut següent.

$ cat list2.txt

1001CSE GPA3.63
1002CSE 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 .

Ves a dalt

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.

Ves a dalt

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

Sortida:

La següent sortida apareixerà després d'executar l'ordre anterior.

Ves a dalt

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.

Ves a dalt

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.

Ves a dalt

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

Ves a dalt

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

Ves a dalt

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

Ves a dalt

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.

Ves a dalt

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 100
Monitor 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.

Ves a dalt

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.

Ves a dalt

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.

Ves a dalt

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.

Ves a dalt

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.

$gatin.txt
$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.

Ves a dalt

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.

Ves a dalt

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.

Ves a dalt

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.

Ves a dalt

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.

Ves a dalt

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.

Ves a dalt

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

Ves a dalt

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.

Ves a dalt

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.

Ves a dalt

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.

Ves a dalt

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

Sortida:

La següent sortida apareixerà després d'executar l'ordre anterior.

Ves a dalt

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 ASP
MySQL 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.txt

Sortida:

La següent sortida apareixerà després de canviar el parell de paraules de cada línia.

Ves a dalt

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.

Ves a dalt

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

Sortida:

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.

Ves a dalt

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.