Teatud juhtudel peame kustutama failist konkreetse rea või mitu, näiteks on minuga juhtunud, et mul on olnud terve failide loend ja ma pean kustutama nende kõigi rida nr 27 (rida nr 27 on ACL-i rida) , norm, reegel, konfiguratsioon), kas ma saan faili failide kaupa redigeerida või saan käsuga lihtsalt saavutada vajaliku janu ja bashi skript (valikuline).
Kuid proovime ühte faili mõnevõrra lihtsana.
Toimik on meil olemas distros-deb.txt mis sisaldab seda:
debian
ubuntu
Archlinux
soolad
piparmünt
Teisisõnu fail distros-deb.txt on see, kuhu me paneme Debiani-põhised distrod, kuid seal näeme, et real # 3 on "archlinux", distro, millel pole ilmselgelt midagi pistmist Debianiga, seega peame selle rea kõrvaldama. Selle faili rea nr 3 kõrvaldamiseks paneme järgmise:
sed "3d" distros-deb.txt > distros-deb-ok.txt
Selle joone selgitamine on mõnevõrra lihtne, kasutades janu "3d" me näitame, et kustutame rea nr 3 koos distros-deb.txt Me näitame, millise failiga töötada, st kustutage selle faili rida nr 3, siia vajutades sisestusklahvi , näitab see, mida me tahame, kuid terminalis, nii et > distros-deb-ok.txt me näitame, et selle asemel, et tulemust terminalis näidata, pani ta selle sellenimelisse faili.
Mis on lihtne?
Samuti võime vältida > distros-deb-ok.txt õige parameetri abil janu, parameeter -i
See tähendab, et kui me tahame failist rea eemaldada ja selle sama nimega (ja mitte mõnesse muusse faili) salvestada, lisage lihtsalt parameeter -i :
sed -i "3d" distros-deb.txt
See eemaldab distros-deb.txt-st rea nr 3 ja salvestab selle.
Mis siis, kui ma tahan ridade vahemikku, see tähendab joonte nr 3, aga ka # 4 ja # 5 eemaldamist? Selle saavutamiseks paneme vahemiku 3 kuni 5, see tähendab:
sed -i "3,5d" distros-deb.txt
Ja see näitab mulle ainult debiani ja kubuntut 😀
Mis siis saab, kui ma tahan kustutada 2. realt viimasele, kui ma ei tea ridade koguarvu?
Kasutage lihtsalt dollari sümbolit - »$
sed -i "2,$d" distros-deb.txt
Kui soovite kõrvaldada esimeselt realt numbrile 4, paneme lihtsalt väärtuse 1 alguses:
sed -i "1,4d" distros-deb.txt
See on olnud kõik, väga kasulik näpunäide, kui soovite teha bash-skripte ülesannete automatiseerimiseks ja peate muutma ja kõrvaldama konfiguratsioonifailide ridu, et saaksime kasutada janu o perl, samuti kõrvaldamiseks teame seda juba sed-ga teha
seoses
Väga hea panus 😉
Aitäh
Muide, me saime teie e-kirja kohe, ma vastan teile 😀
seoses
Terminali, serverite ja ssh-ühenduste ülempreestrina tulen teie juurde, oi, suurepärane KZKG ^ Gaara, ja küsin teilt: kust saaksin oma teadmatuse tasemel õpetuse, mis võimaldab mul jagada ssh-ühendusi kahe kaugmasina vahel erinevates võrkudes tekstifailid, pdf, pilt ja heli (mp3) ...
🙂
Tõsiselt, kas saaksite mind selles osas suunata, mul on kaks masinat, üks tööl ja üks kodus ning mul on vaja nende vahel ssh-ühendust (sest nagu ma aru saan, lubab ssh sisu masinate vahel jagada, kas mul on õigus?
Ja kui ma eksin, siis millist rakendust soovitate?
Ja kust ma leian selles osas põhiõpetuse?
scp
scp kasutaja @ masina aadress: tee kasutaja @ masina aadress: tee.
Sama süntaks nagu cp, allikas -> sihtkoht.
Sa ilmusid mehele, sa olid kadunud.
Hea näpunäide!
Huvitav näpunäide ... xD
Kas olete juhtunud teadma sellist, mis tõstab julge teksti esile?
Ma mõtlen, et mul on txt-fail, mis on sõnastik, sellel on rohkem kui 10000 XNUMX rida ja ma tahan, et see tõstaks teatud teksti enne peatamispunkte ":" esile ja ükshaaval tegemine on liiga palju.
Tere,
Txt-fail on lihttekst, nagu nimigi ütleb ... tavaline, ilma vormingute või muu sarnaseta, vabandust, aga ma ei usu, et seda, mida te küsite, saab teha? 🙁
seoses
tegelikult saab, aga peaksite teadma sihtkoha vormingut.
nt:
echo $ (kaja "Robert: Tere, muutke siin" | sed 's / \ ./. \\ e [40; 31m /; s / \: /: \\ e [40; 35m /')
see on toimetuleku küsimus.
teine kustutamise viis, mida saab kasutada, on sed '/' $ 1 '/ d', kuid selles peate olema kindel.
siis lõpeta selle salvestamine kausta * .odt
Kas LibreOffice'iga pole seda lihtsam teha?
Kas saaksite osa reast kustutada ja ülejäänud osa jätta?
Oletame, et tahan kõik kustutada teatud rea sõna ees.
Või kustutage kõik, mis sellele sõnale järgneb.
Jah, see on regexi tõmbamine (vajadusel mees sed -r, –regexp-extended)
Alustades sellest, mida leian
kaja «Robert: Tere. Muuda siin »| sed 's / Muuda //'
täpselt määratletud mustriga ja. (üks märk) ja * (rohkem kui üks)
Pärast:
kaja «Robert: Tere. Muuda siin »| sed 's / Muuda. * //'
Enne:
kaja «Robert: Tere. Muuda siin »| sed 's /. * Muuda //'
Kui on oluline, et sõna ilmuks
kaja «Robert: Tere. Muuda siin »| sed 's / Muuda. * / Muuda /'
või täpsemalt
reas, mis sisaldab Robertit, mis toimub pärast Change'i
kaja -e «Fritz: Tere. Muuda siin \ nRobert: Tere. Muuda siin »| sed '/Robert/s/Cambio.*//'
või nagu alguses võta välja teine rida ja töötle ülejäänu
kaja -e «Fritz: Tere. Muuda siin \ nRobert: Tere. Muutke siin \ nMuud »| sed -e 2d -e 's / Muuda. * //'
kaja -e «Fritz: Tere. Muuda siin \ nRobert: Tere. Muutke siin \ nMuud »| sed '2d; s / Muuda. * //'
Aitäh, see on mulle väga kasulik.
Tore artikkel, mis mulle meeldib, kui suurepärane SysAdmin!
Mis oleks meie elu ilma sed, awek, perl, grep, saba, pea, "Emacs" ja nii paljude muude oluliste tööriistadeta!
Aitäh, sellest oli palju abi.
Tere, ja kuidas saaksite sama käsu failist ridu 1,4 ja 10 kustutada?