Sed Naują eilutę pakeiskite tarpu

Sed Nauja Eilute Pakeiskite Tarpu



UNIX / Linux sistemoje komanda sed yra skirtas srautams redaguoti skirtas įrankis. Jis gali atlikti įvairias teksto srauto operacijas, tokias kaip paieška, radimas ir pakeitimas bei įterpimas / trynimas. Tačiau dažniausiai sed naudojamas teksto turiniui rasti ir pakeisti.

Šiame vadove pademonstruosime naujų eilučių pakeitimą tarpu naudojant sed.

sed naudojimas teksto pakeitimui

Pirmiausia greitai pažiūrėkime, kaip atlikti pagrindinį radimą ir pakeisti naudodami sed. Tas pats metodas bus naudojamas pakeičiant naujas eilutes tarpais su kai kuriomis papildomomis parinktimis. Komandų struktūra yra tokia:







$ sed -e 's///'

Pažvelkite į šią komandą:



$ echo 'greita rudoji lapė' | sed -e 's/quick/fast/g'



Echo komanda išspausdina eilutę į STDOUT . STDOUT srautas yra tada vamzdžiais į sed. Mes nurodėme sed pakeisti bet kokį greito pakeitimo atvejį greitai. Galiausiai išvestis atspausdinama ekrane.





Naujų eilučių pakeitimas tarpu

Norėdami parodyti, sukūriau šį tekstinį failą test.txt su keliais netikrais turiniais:

$ cat test.txt



Komanda sed priima reguliariąsias išraiškas įvairiems šablonams apibūdinti. Pasitelkę šią funkciją, naują eilutę apibūdinsime kaip \n. Pabandykime naujas eilutes pakeisti tarpais:

$ sed -e 's/\n/ /g' test.txt

Tačiau tai neveikė taip, kaip tikėtasi. Norint pasiekti šį tikslą, mums reikia papildomų galimybių. Pažvelkite į šią komandą:

$ sed -e ':a;N;$!ba;s/\n/ /g' test.txt

sed komanda turi keletą skyrių; kiekvienas reiškia konkrečią užduotį:

  • :a: sukuria etiketę „a“
  • N: prideda kitą eilutę prie šablono erdvės
  • $!ba: jei ne paskutinė eilutė, grįžta į etiketę „a“
  • s/\n/ /g: randa ir pakeičia naują eilutę (\n) tarpu (/ /). Šablonas suderintas visame pasaulyje (/g)

Komanda sed tęsiasi žingsniais, kol pasiekia paskutinę eilutę, visus \n simbolius pakeisdama tarpu.

Vietoj šios sudėtingos komandos galime supaprastinti dalykus naudodami -z vėliavėlę, kuri nurodo, kad sed veiktų su nuliu atskirtais įrašais. Komanda atrodytų taip:

$ sed -z -e 's/\n/ /g' test.txt

Alternatyvūs metodai

Nors sed gali puikiai atlikti užduotį, yra keletas alternatyvių įrankių. Šiame skyriuje trumpai išnagrinėsime keletą iš jų.

Šiame pavyzdyje galime naudoti komandą tr, norėdami paprastai pakeisti naują eilutę tarpais:

$ tr '\n' ' ' < test.txt

Taip pat darbui atlikti galime naudoti perl. Ši sintaksė taip pat panaši į tą, kurią naudojome su sed (bet supaprastinta):

$ perl -p -e 's/\n/ /' test.txt

Kitas būdas pakeisti naujas eilutes tarpais yra naudoti komandą įklijuoti. Atminkite, kad jis gali pašalinti tik vieną simbolį:

$ paste -s -d ' ' test.txt

Panašiai kaip sed, Linux yra su kitu įrankiu awk. Panašiai kaip sed, jis taip pat gali atlikti kai kuriuos išplėstinius įvesties pakeitimus. Mūsų tikslams naudokite šią awk komandą:

$ awk 1 ORS=' ' test.txt

Išvada

Šiame vadove buvo nagrinėjama, kaip naują eilutę pakeisti tarpu tarpo naudojant sed. Tai buvo pasiekta dviem skirtingais būdais. Šiame vadove taip pat yra kitų susijusių įrankių, kuriuos galime naudoti norėdami pakeisti naują eilutę tarpais.

Užuot naudoję sudėtingas komandas, kurias sunku įsiminti, naudojame „Bash“ scenarijus, kad atliktume daug dalykų „Linux“. Nors tai kainuoja tam tikrą našumą, lankstumas ir patogumas yra to verti. Išmokti daugiau apie Bash scenarijus pradedantiesiems .