SED komanda UNIX nozīmē straumes redaktoru, un tā failā var veikt daudzas funkcijas, piemēram, meklēšanu, atrašanu un aizstāšanu, ievietošanu vai dzēšanu. Lai gan visbiežāk SED komanda UNIX tiek izmantota aizstāšanai vai atrašanai un aizstāšanai. Izmantojot SED, varat rediģēt failus pat neatverot tos, kas ir daudz ātrāks veids, kā atrast un aizstāt kaut ko failā, nekā vispirms atvērt šo failu VI redaktorā un pēc tam to mainīt.
- SED ir spēcīgs teksta straumes redaktors. Var veikt ievietošanu, dzēšanu, meklēšanu un aizstāšanu.
- SED komanda operētājsistēmā Unix atbalsta regulāro izteiksmi, kas ļauj tai veikt sarežģītu modeļu saskaņošanu.
Sintakse:
sed OPTIONS... [SCRIPT] [INPUTFILE...]>
Piemērs:
Apsveriet tālāk norādīto teksta failu kā ievadi.
$cat>geekfile.txt>
unix is great os. unix is opensource. unix is free os. learn operating system. unix linux which one you choose. unix is easy to learn.unix is a multiuser os.Learn unix .unix is a powerful.>
Komandu paraugi
- Virknes aizstāšana vai aizstāšana: komandu Sed galvenokārt izmanto, lai aizstātu tekstu failā. Zemāk esošā vienkāršā komanda sed failā aizstāj vārdu unix ar linux.
$sed 's/unix/linux/' geekfile.txt>
Izvade:
uzlabota cilpai java
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.>
Šeit s norāda aizstāšanas darbību. / ir norobežotāji. Unix ir meklēšanas modelis, un Linux ir aizstājējvirkne.
Pēc noklusējuma komanda sed aizstāj raksta pirmo gadījumu katrā rindā, un tā neaizstās otro, trešo … gadījumu rindā. Raksta n-tā gadījuma aizstāšana rindā : izmantojiet karogus /1, /2 utt, lai rindā aizstātu raksta pirmo, otro gadījumu. Zemāk esošā komanda aizstāj otro vārda unix gadījumu ar linux rindā.
virkņu masīva izveide Java
$sed 's/unix/linux/2' geekfile.txt>
Izvade:
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.>Visu parauga gadījumu aizstāšana rindā: Aizstāšanas karodziņš /g (globālā aizstāšana) norāda komandu sed, lai aizstātu visus virknes gadījumus rindā.
$sed 's/unix/linux/g' geekfile.txt>
Izvade:
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.>Aizstāšana no n-tā gadījuma uz visiem gadījumiem rindā : izmantojiet kombināciju /1, /2 utt un /g, lai rindā aizstātu visus paraugus no n-tā gadījuma. Sekojošā sed komanda aizstāj trešo, ceturto, piekto… unix vārdu ar linux vārdu rindā.
$sed 's/unix/linux/3g' geekfile.txt>
Izvade:
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.>Ievietojiet katra vārda pirmo rakstzīmi iekavās: šajā piemērā tiek izdrukāta katra vārda pirmā rakstzīme iekavās.
$ echo 'Welcome To The Geek Stuff' | sed 's/([A-Z])/(1)/g'>
Izvade:
(W)elcome (T)o (T)he (G)eek (S)tuff>Virknes aizstāšana noteiktā rindas numurā : varat ierobežot sed komandu, lai aizstātu virkni noteiktā rindas numurā. Piemērs ir
$sed '3 s/unix/linux/' geekfile.txt>
Izvade:
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.>
Iepriekš minētā komanda sed aizstāj virkni tikai trešajā rindā. Aizstātās rindas dublēšana ar karogu /p : /p drukas karogs terminālī izdrukā aizstāto rindiņu divas reizes. Ja rindiņai nav meklēšanas modeļa un tā netiek aizstāta, /p šo rindiņu drukā tikai vienu reizi.
$sed 's/unix/linux/p' geekfile.txt>
Izvade:
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.>Tikai aizstāto rindu drukāšana: izmantojiet opciju -n kopā ar /p drukas karogu, lai parādītu tikai aizstātās rindas. Šeit opcija -n nomāc dublētās rindas, ko ģenerē /p karodziņš, un izdrukā aizstātās rindas tikai vienu reizi.
$sed -n 's/unix/linux/p' geekfile.txt>
Izvade:
linux 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.>
Ja lieto -n atsevišķi bez /p, tad sed neko nedrukā. Virknes aizstāšana rindu diapazonā : virknes aizstāšanai komandai sed varat norādīt rindas numuru diapazonu.
kat timpf tīrā vērtība
$sed '1,3 s/unix/linux/' geekfile.txt>
Izvade:
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.>
Šeit komanda sed aizstāj rindas ar diapazonu no 1 līdz 3. Vēl viens piemērs ir
$sed '2,$ s/unix/linux/' geekfile.txt>
Izvade:
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>
Šeit $ norāda faila pēdējo rindiņu. Tātad komanda sed aizstāj tekstu no otrās rindas uz pēdējo rindiņu failā. Rindu dzēšana no noteikta faila: SED komandu var izmantot arī rindu dzēšanai no konkrēta faila. SED komanda tiek izmantota dzēšanas operāciju veikšanai, pat neatverot failu
Piemēri:
1. Lai dzēstu noteiktu rindu, sakiet n šajā piemērā
Syntax: $ sed 'nd' filename.txt Example: $ sed '5d' filename.txt>
2. Lai dzēstu pēdējo rindiņu
Syntax: $ sed '$d' filename.txt>
3. Lai izdzēstu līniju no diapazona x līdz y
Syntax: $ sed 'x,yd' filename.txt Example: $ sed '3,6d' filename.txt>
4. Lai dzēstu no n līdz pēdējai rindai
Syntax: $ sed 'nth,$d' filename.txt Example: $ sed '12,$d' filename.txt>
5. Lai dzēstu raksta atbilstības līniju
kas ir lietotājvārds
Syntax: $ sed '/pattern/d' filename.txt Example: $ sed '/abc/d' filename.txt>
SED komanda operētājsistēmā Linux | 2. komplekts