Joissakin tapauksissa meidän on poistettava tietty rivi tiedostosta tai useita, esimerkiksi minulle sattui, että minulla on ollut koko luettelo tiedostoista ja minun on poistettava rivi # 27 kaikista näistä (rivi # 27 on ACL , normi, sääntö, kokoonpano), joko voin muokata tiedostoa tiedostona tai voin vain saavuttaa tarvitsemani komennolla jano ja bash-komentosarja (valinnainen).
Mutta kokeillaan yhtä tiedostoa hieman yksinkertaisella.
Meillä on tiedosto distros-deb.txt joka sisältää tämän:
debian
Kubuntu
Arch Linux
yksin
minttu
Toisin sanoen tiedosto distros-deb.txt on, johon laitamme Debian-pohjaiset distrot, mutta siellä näemme, että rivillä # 3 on "archlinux", distro, jolla ei tietenkään ole mitään tekemistä Debianin kanssa, joten meidän on poistettava tämä rivi. Tämän rivin # 3 poistamiseksi asetamme seuraavan:
sed "3d" distros-deb.txt > distros-deb-ok.txt
Tämän linjan selittäminen on melko helppoa janoinen "3d" ilmoitamme poistavansa rivin # 3 distros-deb.txt Ilmoitamme, mitä tiedostoa haluat työskennellä, eli poista tämän tiedoston rivi # 3, tähän asti, jos painamme Enter, se näyttää meille mitä haluamme, mutta terminaalissa, joten > distros-deb-ok.txt osoitamme, että sen sijaan, että tulos näytetään terminaalissa, se laittaa sen tiedostoon tällä nimellä.
Mikä on yksinkertaista?
Voimme myös välttää > distros-deb-ok.txt käyttämällä oikeaa parametria jano, parametri -i
Eli jos haluamme poistaa rivin tiedostosta ja tallentaa sen samalla nimellä (eikä toiseen tiedostoon), lisää vain parametri -i :
sed -i "3d" distros-deb.txt
Tämä poistaa rivin # 3 distros-deb.txt-tiedostosta ja tallentaa sen.
Entä jos haluan joukon viivoja, toisin sanoen poistaa viivat # 3, mutta myös # 4 ja # 5? Tämän saavuttamiseksi asetamme alueen 3-5: een, toisin sanoen:
sed -i "3,5d" distros-deb.txt
Ja se näyttää minulle vain debianin ja kubuntun 😀
Joten mitä jos haluan poistaa riviltä 2 viimeiseen, kun en tiedä rivien kokonaismäärää?
Käytä vain dollarin symbolia - »$
sed -i "2,$d" distros-deb.txt
Jos haluat poistaa ensimmäiseltä riviltä numeroon 4, laitamme yksinkertaisesti arvon 1 alkuun:
sed -i "1,4d" distros-deb.txt
Tämä on ollut kaikkea, erittäin hyödyllinen vinkki, kun haluat tehdä bash-komentosarjoja tehtävien automatisoimiseksi ja sinun on muokattava ja poistettava määritystiedostojen rivit, jotta voimme muokata jano o perl, samoin kuin poistamiseksi tiedämme jo, miten se tehdään sedillä sed
terveiset
Erittäin hyvä panos 😉
Kiitos
Muuten, saimme sähköpostisi juuri nyt, vastaan sinulle 😀
terveiset
Päätelaitteen, palvelimien ja ssh-yhteyksien ylipapina tulen luoksesi, oi loistava KZKG ^ Gaara, ja kysyn sinulta: mistä saan tietämättömyyteni tason opetusohjelman, jonka avulla voin käyttää kahden etälaitteen välisiä ssh-yhteyksiä eri verkoissa jakamiseen tekstitiedostot, pdf, kuva ja ääni (mp3)….
🙂
Vakavasti, voisitteko ohjata minua tässä suhteessa, minulla on kaksi konetta, yksi töissä ja toinen kotona, ja tarvitsen niiden välille ssh-yhteyden (koska kuten ymmärrän, ssh sallii sisällön jakamisen koneiden välillä, olenko oikeassa?).
Ja jos olen väärässä, mitä sovellusta suosittelet?
Ja mistä löydän tältä osin peruskurssin?
scp
scp käyttäjä @ koneen osoite: polku käyttäjä @ koneen osoite: polku.
Sama syntakse kuin cp, lähde -> kohde.
Ilmoitit miehelle, olet eksynyt.
Hyvä vinkki!
Mielenkiintoinen vinkki ... xD
Tiedätkö satunnaisesti sellaisen, joka saa rohkean tekstin erottumaan?
Tarkoitan, että minulla on txt-tiedosto, joka on sanakirja, siinä on yli 10000 riviä ja haluan sen korostavan tietyn tekstin ennen ":" - keskeytyskohtia ja tekemällä sen yksi kerrallaan on liikaa.
Hei,
Txt-tiedosto on pelkkää tekstiä, kuten nimestä voi päätellä ... yksinkertainen, ilman muotoja tai vastaavaa, olen pahoillani, mutta luulen, että mitä kysyt, ei voi tehdä, eikö niin? 🙁
terveiset
itse asiassa se voi, mutta sinun on tiedettävä kohdemuoto.
esim:
echo $ (echo "Robert: Hei. Vaihda tänne" | sed 's / \ ./. \\ e [40; 31m /; s / \: /: \\ e [40; 35m /')
se on selviytymisen asia.
toinen tapa poistaa on sed '/' $ 1 '/ d', mutta sinun on oltava varma uudestaan.
lopeta sen tallentaminen kansioon * .odt
Eikö ole helpompaa tapaa tehdä se LibreOfficen kanssa?
Voisitko poistaa osan rivistä ja jättää loput?
Oletetaan, että haluan poistaa kaiken sanan edestä tietyllä rivillä.
Tai poista kaikki, jotka seuraavat sanaa.
Kyllä, kyse on regexin vetämisestä (tarvittaessa mies sed -r, –regexp-extended)
Alkaen siitä, mitä löydän
kaiku «Robert: Hei. Vaihda täällä »| sed 's / Muuta //'
hyvin määritellyllä kuviolla ja. (yksi merkki) ja * (useampi kuin yksi)
Jälkeen:
kaiku «Robert: Hei. Vaihda täällä »| sed 's / Change. * //'
Ennen:
kaiku «Robert: Hei. Vaihda täällä »| sed 's /. * Vaihda //'
Jos sillä on merkitystä, että sana näkyy
kaiku «Robert: Hei. Vaihda täällä »| sed 's / Muuta. * / Muuta /'
tai monimutkaisempi
rivillä, joka sisältää Robertin, mikä tapahtuu muutoksen jälkeen
echo -e «Fritz: Hei. Muuta täällä \ nRobert: Hei. Vaihda täällä »| sed '/Robert/s/Cambio.*//'
tai tykkää alusta alkaen poista toinen rivi ja käsittele loput
echo -e «Fritz: Hei. Muuta täällä \ nRobert: Hei. Vaihda tähän \ nMuut »| sed -e 2d -e 's / Muuta. * //'
echo -e «Fritz: Hei. Muuta täällä \ nRobert: Hei. Vaihda tähän \ nMuut »| sed '2d; s / Muuta. * //'
Kiitos, se on minulle erittäin hyödyllinen.
Mukava artikkeli, josta pidän, kuinka mahtava SysAdmin!
Mikä olisi elämämme ilman sed, awek, perl, grep, häntä, pää, "Emacs" ja niin monia muita tärkeitä työkaluja!
Kiitos, se oli erittäin hyödyllinen.
Hei, ja miten voit poistaa rivit 1,4 ja 10 saman komennon tiedostosta?