To Kaip naudoti SED komandą „Linux“ - PAVYZDŽIAI

„Linux“ yra komandų kupina sistema, kurioje kiekviena atlieka esminį vaidmenį atliekant tam tikras užduotis, nesvarbu, ar tai būtų vartotojo, objekto ar palaikymo valdymas, kiekviena komanda dalyvauja „Linux“ ir viena iš šių komandų yra „Sed“, apie kurią kalbėsime „Solvetic“ išsamiai.

Kas yra „sed“ komanda „Linux“„Sed“ komanda yra tiesiog srauto redaktorius, kurį galime naudoti norėdami pakeisti teksto darbus su pagrindinėmis funkcijomis įvesties sraute iš failo arba, jei taikoma, įvesties iš dujotiekio.

Skirtingai nuo kitų teksto redaktorių, naudojant „sed“ galima filtruoti srauto tekstą, kai einame per pasirinktą turinį.

Privalumas„Sed“ naudojimo „Linux“ pranašumai yra šie:

  • Galime pasirinkti tekstą
  • Mes galime pakeisti tekstą
  • Pridėkite eilutes prie teksto
  • Mes galime pašalinti eilutes iš teksto
  • Leidžia keisti arba išsaugoti originalų failą

Bendra sedo sintaksė yra tokia:

 sed OPTIONS… [SCRIPT] [INPUT_FILE…]
Mes išmoksime keletą būdų, kaip naudoti šią komandą „Linux“.

1. Kaip naudoti SED komandą „Linux“

Pagrindinis sedo naudojimasŠiame pavyzdyje mes naudosime „echo“, kad pamatytume, kaip komanda „sed“ gali pakeisti dalį įvesto teksto, įvedame:

 echo solvitic | sed 's / vitic / vetic /'
Šiuo atveju sakome sed, kad žodis „vitic“ būtų pakeistas į „vetic“, paspaudus „Enter“ bus toks rezultatas:

DIDELIS

Matome, kad pakeitimas yra automatinis.

2. Teksto pasirinkimas naudojant komandą SED Linux

1 žingsnis
Tokiu atveju turėsime tekstinį failą, kuris yra priglobtas darbalaukyje:

DIDELIS

Dabar mes naudosime šią eilutę:

 mažiau Solvetic.txt
2 žingsnis
Paspaudus „Enter“, rezultatas bus toks:

DIDELIS

Naudojant „sed“ galima pasirinkti kai kurias failo eilutes, todėl turime nurodyti pradines ir paskutines pasirinkto diapazono eilutes, pavyzdžiui, jei norime išgauti nuo dviejų iki septynių eilučių, vykdome:

 sed -n '2,7p' Solvetic.txt
3 žingsnis
Pamatysime šiuos dalykus:

DIDELIS

Turime turėti omenyje kablelį priskiriamuose diapazonuose (2,7), parametras p rodo, kad tai reiškia „spausdinti atitinkančias eilutes“, todėl komanda sed spausdins visas to diapazono eilutes ir -n (tylus ) parinktis pasirūpina, kad nebūtų rodomas tas diapazonas neatitinkantis tekstas.

4 žingsnis
Mes galime naudoti parametrą -e (išraiška), kad pasirinktume kelis kartus, pavyzdžiui:

 sed -n -e '1,2p' -e '5,6p' Solvetic.txt

DIDELIS

5 žingsnis
Naudojant „sed“ galima pasirinkti pradinę eilutę, tada nurodome, kurią failą reikia pereiti, ir atspausdinti alternatyvias eilutes, pavyzdžiui, įvedame:

 sed -n '1 ~ 3p' Solvetic.txt
Šiuo atveju pirmasis skaičius nurodo pradžios liniją, o antrasis - nurodo, kurios eilutės po pradžios linijos bus rodomos:

DIDELIS

6 žingsnis
Kitas sed naudojimas yra galimybė pasirinkti eilutes, kuriose yra atitinkami teksto šablonai. Jei nežinome, iš kur kilęs eilutės numeris, galime atlikti šiuos veiksmus:

 sed -n ' / Vykdyti / p' Solvetic.txt

DIDELIS

Pamatysime eilutes, kurios prasideda šiuo terminu.

3. Kaip sukurti pakeitimus naudojant „SED Linux“

1 žingsnis
Pagrindinėje dalyje pamatėme, kaip pakeisti tekstą naudojant sed, ten naudojome parametrą -s (substitution). Tada pirmoji eilutė nurodo paieškos modelį, o antroji - tekstą, kuriuo ji bus pakeista.

 sed -n 's / užduotys / veiksmai / p' Solvetic.txt 
Šiame pavyzdyje „užduotis“ pakeičiame „veiksmais“:

DIDELIS

2 žingsnis
Naudojant parametrą p sed jis automatiškai sustoja po pirmosios rungtynės, norėdami atlikti visuotinę paiešką ir apskritai atlikti pakeitimą, turime pridėti „g“:

 sed -n 's / tasks / action / gp' Solvetic.txt
Jei norime, kad nebūtų skiriamos didžiosios ir mažosios raidės, pridėsime „i“:
 sed -n 's / tasks / action / gpi' Solvetic.txt
3 žingsnis
Pakeitimų apribojimus galima nustatyti tik tam tikrose failo dalyse, pirmiausia išvardijame analizuojamas eilutes:
 sed -n '1,3p' Solvetic.txt

DIDELIS

4 žingsnis
Pažiūrėkime toliau, mes galime rasti, kur yra dvi erdvės, ir pakeisti jas viena:

 sed -n '1,3 s / * / / gp' Solvetic.txt
Žvaigždutė (*) reiškia nulį ar daugiau anksčiau pasirinkto simbolio.

5 žingsnis
Galite sumažinti paieškos modelį iki vienos vietos naudodami šią komandą:

 sed -n '1,3 s / * / / gp' Solvetic.txt
Mes matome rezultatų skirtumą:

DIDELIS

Pastaruoju atveju žvaigždutė atitinka nulį ar daugiau ankstesnio simbolio, todėl taikant komandą kiekvienas ne tarpo simbolis atrodo kaip „nulinis tarpas“.

6 žingsnis
Norėdami atlikti du ar daugiau pakeitimų vienu metu, vykdome:

 sed -n -e 's / executed / taikomas / gip' -e 's / užduotys / veiksmai / gip' Solvetic.txt

DIDELIS

4. SED pakeitimo parinktys „Linux“


Taip pat galime naudoti „sed“ failų pavadinimams iš sistemos išgauti, šiuo atveju turime turėti omenyje, kad kiekvienas objektas turi atitikti paieškos modelį (subraiškas), kuris gali būti sunumeruotas (ne daugiau kaip devyni elementai).

1 žingsnis
Tada šie skaičiai gali būti naudojami nurodant konkrečias posakius.
Papildoma išraiška turi būti uždėta skliausteliuose [()], o prieš skliaustelius turi būti pasvirosios brūkšnys (\), kad jie nebūtų aptikti kaip įprastas simbolis, pavyzdžiui:

 sed 's / \ ([^:] * \). * / \ 1 /' / etc / passwd

DIDELIS

Šioje komandoje naudojami kintamieji yra

  • sed 's /: nurodo komandą sed ir pakeitimo išraiškos pradžią.
  • \ (: pridėkite antraeilę frazę, prieš kurią yra pasvirasis brūkšnys
  • [^:] *: yra pirmasis paieškos termino posakis, kuriame yra grupė tarp skliaustų, o kareivio ženklas (^) reiškia „ne“, kai naudojamas grupėje, tai yra bet koks simbolis, kuris nėra dvitaškis
  • \): Uždaromas skliaustas [)] su pasviruoju brūkšniu
  • . *: yra antrasis paieškos posakis, nurodantis „bet kokį simbolį ir bet kokį jų skaičių“.
  • / \ 1: yra išraiškos pakeitimo dalis, kurioje yra skaičius 1, prieš kurį yra pasvirasis brūkšnys (\) ir nurodo, kad tekstas atitinka pirmąją posakį
  • / ': nutraukia komandą sed

2 žingsnis
Su ankstesne komanda mes ieškojome bet kokios simbolių eilutės, kurioje nėra dvitaškio, nes kiekviena failo / etc / passwd eilutė prasideda vartotojo vardu, kuris baigiasi dvitaškiu. Šią vertę, išskiriančią vartotojo vardą, galime pakeisti šia komanda:

 sed 's / \ [[^:] * \) \ (. * \) / \ 2 /' / etc / passwd

DIDELIS

3 žingsnis
Mes galime rodyti tik vartotojų vardus naudodami šią komandą:

 sedas /:.*// "/ etc/ passwd
Kitas „sed“ variantas yra naudoti parametrą c (cut - cut), kad pakeistumėte failo tekstą, pavyzdžiui:
 sed ' / Linux / c Linux operacinė sistema' Solvetic.txt

DIDELIS

5. Įterpkite eilutes ir tekstą naudodami SED „Linux“

1 žingsnis
Kitas uždavinys, kurį reikia naudoti su sed, yra įterpti naujas eilutes ir tekstą į failą, šiuo atveju turime šiuos duomenis:

DIDELIS

2 žingsnis
Galime įterpti naują eilutę, nurodydami, po kuria ji bus įterpta:

 sed ' / Ub / a -> Įterptas!' Solvetic.txt

DIDELIS

3 žingsnis
Taip pat galima naudoti komandą Įterpti (i), norint įterpti naują eilutę virš atitikties:

 sed ' / Wi / i -> Įterptas!' Solvetic.txt

DIDELIS

4 žingsnis
Norėdami pridėti naują tekstą prie atitinkančios failo eilutės, galime naudoti simbolį „&“ ir:

 sed 's /.*/--> Įterptas & /' Solvetic.txt

DIDELIS

6. Kaip ištrinti eilutę naudojant „SED Linux“


Šiuo atveju turime naudoti parametrą d (ištrinti), kad ištrintume, pavyzdžiui, antrąją eilutę, kurią vykdome:
 sed '2d' Solvetic.txt

DIDELIS

Jei reikia, galime pašalinti diapazoną:

 sed '1,4d' Solvetic.txt
Norėdami pašalinti linijas už diapazono ribų, turime naudoti šauktuką (!):
 sed '2,4! d' Solvetic.txt

7. Kaip išsaugoti pakeitimus naudojant SED „Linux“

1 žingsnis
Norėdami pritaikyti atliktus pakeitimus, galite naudoti parinktį vietoje (-i), kad sedas galėtų įrašyti pakeitimus į pradinį failą, tačiau dėl didesnio saugumo galime pridėti atsarginį plėtinį, kaip nurodyta toliau (sukūrėme atsarginę kopiją) eilutės, kuriose yra žodis Wi):

 sed -i'.bak '' /^.*Wi.*$/d 'Solvetic.txt
Mes išvardijame turinį:
 katė Solvetic.txt.bak

DIDELIS

2 žingsnis
Galima nukreipti išvestį į naują failą su tais pačiais rezultatais:

 sed -i'.bak '' /^.*Wi.*$/d 'Solvetic.txt> Solvetic1.txt

DIDELIS

Naudodami „sed“ galime visiškai visiškai dirbti su failais „Linux“, nes matėme kiekvieną jo naudojimo parinktį.

wave wave wave wave wave