logo

„Sed“ komanda „Linux“ / „Unix“ sistemoje su pavyzdžiais

SED komanda UNIX reiškia srauto rengyklę ir gali atlikti daugybę failų funkcijų, pvz., ieškoti, rasti ir pakeisti, įterpti ar ištrinti. Nors dažniausiai UNIX SED komanda naudojama pakeitimui arba paieškai ir pakeitimui. Naudodami SED galite redaguoti failus net jų neatidarę, o tai yra daug greitesnis būdas ką nors rasti ir pakeisti faile, nei pirmą kartą atidaryti failą VI redaktoriuje ir tada jį pakeisti.

  • SED yra galingas teksto srauto rengyklė. Gali įterpti, ištrinti, ieškoti ir pakeisti (pakeitimas).
  • SED komanda Unix palaiko reguliariąją išraišką, kuri leidžia atlikti sudėtingą šablonų suderinimą.

Sintaksė:

 sed OPTIONS... [SCRIPT] [INPUTFILE...]>

Pavyzdys:
Apsvarstykite toliau pateiktą tekstinį failą kaip įvestį.



 $cat>geekfile.txt>>  $sed 's/unix/linux/' geekfile.txt>

Išvestis:

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

Čia s nurodo pakeitimo operaciją. / yra skyrikliai. „Unix“ yra paieškos šablonas, o „Linux“ yra pakaitinė eilutė.

Pagal numatytuosius nustatymus komanda sed pakeičia pirmąjį šablono atvejį kiekvienoje eilutėje ir nepakeis antrojo, trečiojo... įvykio eilutėje. N-ojo rašto atvejo pakeitimas eilutėje : naudokite vėliavėles /1, /2 ir tt, kad pakeistumėte pirmą, antrą rašto atvejį eilutėje. Žemiau pateikta komanda pakeičia antrąjį žodžio unix atvejį linux eilutėje.

 $sed 's/unix/linux/2' geekfile.txt>

Išvestis:

java sinchronizuoti
 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.>
Viso pavyzdžio pakeitimas eilutėje: pakaitalo vėliavėlė /g (visuotinis pakeitimas) nurodo sed komandą, kuri pakeis visus eilutės atvejus.
 $sed 's/unix/linux/g' geekfile.txt>

Išvestis:

 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.>
Keitimas iš n-ojo atvejo į visus eilutę : naudokite /1, /2 ir tt ir /g derinį, kad pakeistumėte visus šablonus nuo n-ojo modelio pasireiškimo eilutėje. Ši komanda sed pakeičia trečią, ketvirtą, penktą… unix žodį eilutėje linux žodžiu.
 $sed 's/unix/linux/3g' geekfile.txt>

Išvestis:

 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.>
Kiekvieno žodžio pirmasis simbolis skliausteliuose : šiame sed pavyzdyje spausdinamas pirmasis kiekvieno žodžio ženklas skliausteliuose.
 $ echo 'Welcome To The Geek Stuff' | sed 's/([A-Z])/(1)/g'>

Išvestis:

 (W)elcome (T)o (T)he (G)eek (S)tuff>
Konkrečios eilutės numerio eilutės pakeitimas : galite apriboti sed komandą, kad pakeistumėte eilutę konkrečiame eilutės numeryje. Pavyzdys yra
 $sed '3 s/unix/linux/' geekfile.txt>

Išvestis:

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

Aukščiau pateikta komanda sed pakeičia eilutę tik trečioje eilutėje. Pakeistos eilutės kopijavimas naudojant /p vėliavėlę : /p spausdinimo vėliavėlė du kartus išspausdina pakeistą eilutę terminale. Jei eilutėje nėra paieškos šablono ir ji nėra pakeista, /p ta eilutė išspausdinama tik vieną kartą.

 $sed 's/unix/linux/p' geekfile.txt>

Išvestis:

 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.>
Spausdinti tik pakeistas eilutes: naudokite parinktį -n kartu su /p print vėliava, kad būtų rodomos tik pakeistos eilutės. Čia parinktis -n nuslopina pasikartojančias eilutes, kurias sukuria vėliavėlė /p, ir pakeistas eilutes spausdina tik vieną kartą.
 $sed -n 's/unix/linux/p' geekfile.txt>

Išvestis:

duomenų ryšio sluoksnio protokolai
 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.>

Jei naudojate -n atskirai be /p, tada sed nieko nespausdina. Eilučių diapazono eilutės pakeitimas : galite nurodyti eilučių numerių diapazoną komandai sed, kad pakeistumėte eilutę.

 $sed '1,3 s/unix/linux/' geekfile.txt>

Išvestis:

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

Čia komanda sed pakeičia eilutes diapazonu nuo 1 iki 3. Kitas pavyzdys yra

 $sed '2,$ s/unix/linux/' geekfile.txt>

Išvestis:

 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>

Čia $ nurodo paskutinę failo eilutę. Taigi komanda sed pakeičia tekstą nuo antros eilutės iki paskutinės failo eilutės. Eilučių ištrynimas iš konkretaus failo : SED komanda taip pat gali būti naudojama eilutėms iš konkretaus failo ištrinti. SED komanda naudojama trynimo operacijai atlikti net neatidarius failo
Pavyzdžiai:
1. Norėdami ištrinti tam tikrą eilutę, pasakykite n šiame pavyzdyje

 Syntax: $ sed 'nd' filename.txt Example: $ sed '5d' filename.txt>

2. Norėdami ištrinti paskutinę eilutę

 Syntax: $ sed '$d' filename.txt>

3. Norėdami ištrinti eilutę nuo diapazono x iki y

 Syntax: $ sed 'x,yd' filename.txt Example: $ sed '3,6d' filename.txt>

4. Ištrinti nuo n-osios iki paskutinės eilutės

niūrus vidurkis
 Syntax: $ sed 'nth,$d' filename.txt Example: $ sed '12,$d' filename.txt>

5. Norėdami ištrinti šablono atitikimo eilutę

 Syntax: $ sed '/pattern/d' filename.txt Example: $ sed '/abc/d' filename.txt>


SED komanda Linux | 2 rinkinys