L'ordre SED a UNIX significa editor de fluxos i pot realitzar moltes funcions en fitxers com cercar, trobar i substituir, inserció o supressió. Tot i que l'ús més comú de l'ordre SED a UNIX és per substituir o per trobar i substituir. Mitjançant l'ús de SED, podeu editar fitxers fins i tot sense obrir-los, que és una manera molt més ràpida de trobar i reemplaçar alguna cosa al fitxer, que obrir primer aquest fitxer a VI Editor i després canviar-lo.
- SED és un potent editor de flux de text. Pot fer inserció, supressió, cerca i substitució (substitució).
- L'ordre SED a Unix admet l'expressió regular que li permet realitzar una concordança de patrons complexa.
Sintaxi:
sed OPTIONS... [SCRIPT] [INPUTFILE...]>
Exemple:
Considereu el fitxer de text següent com a entrada.
$cat>geekfile.txt>>> canviar el nom d'una carpeta linuxSubstitució o substitució de cadena: l'ordre Sed s'utilitza principalment per substituir el text d'un fitxer. L'ordre sed senzill a continuació substitueix la paraula unix per linux al fitxer.
$sed 's/unix/linux/' geekfile.txt>Sortida:
linux is great os. unix is opensource. unix is free os. learn operating system. linux linux which one you choose. linux is easy to learn.unix is a multiuser os.Learn unix .unix is a powerful.>Aquí la s especifica l'operació de substitució. Les / són delimitadores. Unix és el patró de cerca i Linux és la cadena de substitució.
Per defecte, l'ordre sed substitueix la primera aparició del patró a cada línia i no substituirà la segona, tercera... aparició de la línia. Substitució de l'enèsima ocurrència d'un patró en una línia: utilitzeu els senyaladors /1, /2, etc. per substituir la primera i segona ocurrència d'un patró en una línia. L'ordre següent substitueix la segona ocurrència de la paraula unix amb linux en una línia.
$sed 's/unix/linux/2' geekfile.txt>Sortida:
unix is great os. linux is opensource. unix is free os. learn operating system. unix linux which one you choose. unix is easy to learn.linux is a multiuser os.Learn unix .unix is a powerful.>Substitució de tota l'ocurrència del patró en una línia: el senyalador substitut /g (reemplaçament global) especifica l'ordre sed per substituir totes les ocurrències de la cadena a la línia.$sed 's/unix/linux/g' geekfile.txt>Sortida:
linux is great os. linux is opensource. linux is free os. learn operating system. linux linux which one you choose. linux is easy to learn.linux is a multiuser os.Learn linux .linux is a powerful.>Substitució de l'enèsima ocurrència a totes les ocurrències d'una línia: utilitzeu la combinació de /1, /2, etc. i /g per substituir tots els patrons de l'enèsima ocurrència d'un patró en una línia. La següent ordre sed substitueix la tercera, quarta, cinquena... paraula Unix amb la paraula Linux en una línia.$sed 's/unix/linux/3g' geekfile.txt>Sortida:
unix is great os. unix is opensource. linux is free os. learn operating system. unix linux which one you choose. unix is easy to learn.unix is a multiuser os.Learn linux .linux is a powerful.>Parèntesi primer caràcter de cada paraula : aquest exemple sed imprimeix el primer caràcter de cada paraula entre parèntesis.$ echo 'Welcome To The Geek Stuff' | sed 's/([A-Z])/(1)/g'>Sortida:
forma completa de i d e(W)elcome (T)o (T)he (G)eek (S)tuff>Substitució de la cadena en un número de línia específic: podeu restringir l'ordre sed per substituir la cadena en un número de línia específic. Un exemple és$sed '3 s/unix/linux/' geekfile.txt>Sortida:
unix is great os. unix is opensource. unix is free os. learn operating system. linux linux which one you choose. unix is easy to learn.unix is a multiuser os.Learn unix .unix is a powerful.>L'ordre sed anterior substitueix la cadena només a la tercera línia. Duplicació de la línia substituïda amb /p flag : la bandera d'impressió /p imprimeix la línia substituïda dues vegades al terminal. Si una línia no té el patró de cerca i no se substitueix, aleshores /p imprimeix aquesta línia només una vegada.
$sed 's/unix/linux/p' geekfile.txt>Sortida:
linux is great os. unix is opensource. unix is free os. linux is great os. unix is opensource. unix is free os. learn operating system. linux linux which one you choose. linux linux which one you choose. linux is easy to learn.unix is a multiuser os.Learn unix .unix is a powerful. linux is easy to learn.unix is a multiuser os.Learn unix .unix is a powerful.>Imprimir només les línies substituïdes: utilitzeu l'opció -n juntament amb el senyalador d'impressió /p per mostrar només les línies substituïdes. Aquí l'opció -n suprimeix les files duplicades generades pel senyalador /p i imprimeix les línies substituïdes només una vegada.$sed -n 's/unix/linux/p' geekfile.txt>Sortida:
combinar ordenarlinux is great os. unix is opensource. unix is free os. linux linux which one you choose. linux is easy to learn.unix is a multiuser os.Learn unix .unix is a powerful.>Si utilitzeu -n sol sense /p, el sed no imprimeix res. Substitució de cadena en un rang de línies : podeu especificar un rang de números de línia a l'ordre sed per substituir una cadena.
$sed '1,3 s/unix/linux/' geekfile.txt>Sortida:
linux is great os. unix is opensource. unix is free os. learn operating system. linux linux which one you choose. unix is easy to learn.unix is a multiuser os.Learn unix .unix is a powerful.>Aquí l'ordre sed substitueix les línies amb un rang d'1 a 3. Un altre exemple és
$sed '2,$ s/unix/linux/' geekfile.txt>Sortida:
unix is great os. unix is opensource. unix is free os. learn operating system. linux linux which one you choose. linux is easy to learn.unix is a multiuser os.Learn unix .unix is a powerful>Aquí $ indica l'última línia del fitxer. Així, l'ordre sed substitueix el text de la segona línia a l'última línia del fitxer. Eliminació de línies d'un fitxer concret: l'ordre SED també es pot utilitzar per esborrar línies d'un fitxer determinat. L'ordre SED s'utilitza per realitzar operacions d'eliminació sense ni tan sols obrir el fitxer
Exemples:
1. Per suprimir una línia determinada, digueu n en aquest exempleSyntax: $ sed 'nd' filename.txt Example: $ sed '5d' filename.txt>2. Per esborrar una última línia
Syntax: $ sed '$d' filename.txt>3. Per esborrar la línia del rang x a y
Syntax: $ sed 'x,yd' filename.txt Example: $ sed '3,6d' filename.txt>4. Per esborrar de l'enèsima a l'última línia
Syntax: $ sed 'nth,$d' filename.txt Example: $ sed '12,$d' filename.txt>5. Per suprimir la línia de concordança de patró
què és un nom d'usuariSyntax: $ sed '/pattern/d' filename.txt Example: $ sed '/abc/d' filename.txt>
Ordre SED a Linux | Set 2