Tam tikrais atvejais turime ištrinti tam tikrą failo ar kelių eilučių, pavyzdžiui, man nutiko, kad turėjau visą failų sąrašą ir turiu ištrinti visų 27 eilutes (27 eilutė yra ACL eilutė) , norma, taisyklė, konfigūracija), arba aš galiu redaguoti failą pagal failą, arba tiesiog pasiekiu tai, ko man reikia, naudodamas komandą troškulys ir bash scenarijų (nebūtina).
Pabandykime šiek tiek paprastą failą.
Mes turime bylą distros-deb.txt kuriame yra tai:
Debian
ubuntu
Archlinux
solus
mėta
Tai yra byla distros-deb.txt yra tas, kuriame mes įdėsime „Debian“ pagrindu veikiančius distros, bet ten matome, kad 3 eilutėje yra „archlinux“, platintojas, kuris, aišku, neturi nieko bendro su „Debian“, todėl turime pašalinti šią eilutę. Norėdami pašalinti šio failo 3 eilutę, įdėsime:
sed "3d" distros-deb.txt > distros-deb-ok.txt
Paaiškinti šią eilutę yra šiek tiek lengva, su troškulys „3d“ nurodome, kad ištrinsime 3 eilutę su distros-deb.txt Nurodome, kurį failą reikia dirbti, tai yra, ištrinkite šio failo 3 eilutę, iki čia, jei paspausime Enter, ji parodys mums, ko norime, bet ne terminale, taigi su > distros-deb-ok.txt mes nurodome, kad užuot rodęs rezultatą terminale, jis įdėjo jį į failą tokiu pavadinimu.
Kas yra paprasta?
Taip pat galime išvengti > distros-deb-ok.txt naudojant tinkamą parametrą troškulysparametras -i
Tai yra, jei norime pašalinti eilutę iš failo ir išsaugoti ją tuo pačiu pavadinimu (o ne kitame faile), tiesiog pridėkite parametrą -i :
sed -i "3d" distros-deb.txt
Tai pašalins 3 eilutę iš distros-deb.txt ir išsaugos.
Ką daryti, jei noriu eilutės diapazono, t. Y. Pašalinti linijas Nr. 3, taip pat Nr. 4 ir Nr. 5? Norėdami tai pasiekti, mes nustatėme diapazoną nuo 3 iki 5, tai yra:
sed -i "3,5d" distros-deb.txt
Ir man rodys tik debianą ir kubuntu 😀
Ką daryti, jei noriu ištrinti iš 2 eilutės į paskutinę, kai nežinau visų eilučių?
Tiesiog naudokite dolerio simbolį - »$
sed -i "2,$d" distros-deb.txt
Jei norite pašalinti iš pirmos eilutės į # 4, tada pradžioje tiesiog įrašome vertę 1:
sed -i "1,4d" distros-deb.txt
Tai buvo viskas, labai naudingas patarimas, kai norite sukurti „bash“ scenarijus, kad automatizuotumėte užduotis, ir jums reikia modifikuoti ir pašalinti konfigūracijos failų eilutes, kad galėtume modifikuoti troškulys o perl, taip pat pašalinti jau žinome, kaip tai padaryti su sed sed
saludos
Labai geras indėlis 😉
Ačiū
Beje, mes dabar gavome jūsų el. Laišką, aš jums atsakysiu 😀
saludos
Kaip terminalo, serverių ir ssh ryšių vyriausiasis kunigas, aš ateinu pas jus, o puiku, KZKG ^ Gaara, ir klausiu jūsų: kur aš galiu gauti savo nežinojimo lygio pamoką, leidžiančią man naudoti ssh ryšius tarp dviejų nuotolinių mašinų skirtinguose tinkluose tekstiniai failai, pdf, vaizdas ir garsas (mp3) ...
????
Jei rimtai, ar galėtumėte man patarti šiuo klausimu, aš turiu dvi mašinas, vieną darbe ir vieną namuose, ir man reikia ssh ryšio tarp jų (nes, kaip suprantu, ssh leidžia dalytis turiniu tarp mašinų, ar aš teisus?).
Ir jei aš klystu, kokią programą jūs rekomenduojate?
O kur rasti pagrindinę pamoką šiuo klausimu?
scp
scp vartotojas @ mašinos adresas: kelias vartotojas @ mašinos adresas: kelias.
Ta pati sintaksė kaip ir cp, source -> paskirties vieta.
Pasirodei žmogui, pasiklydai.
Geras patarimas!
Įdomus patarimas ... xD
atsitiktinai nežinote tokio, kuris paryškintų paryškintą tekstą?
Aš turiu omenyje txt failą, kuris yra žodynas, jame yra daugiau nei 10000 XNUMX eilučių, ir aš noriu, kad jis paryškintų tam tikrą tekstą prieš pakabos taškus „:“ ir daryti tai po vieną yra per daug.
Sveiki,
Txt failas yra paprastas tekstas, kaip rodo jo pavadinimas ... paprastas, be formatų ar panašaus, atsiprašau, bet nemanau, kad tai galima padaryti, ar ne? 🙁
saludos
iš tikrųjų gali, bet jūs turėtumėte žinoti paskirties formatą.
pvz .:
echo $ (aidas "Robertas: Sveiki. Keisk čia" | sed 's / \ ./. \\ e [40; 31m /; s / \: /: \\ e [40; 35m /')
tai reikalas susitvarkyti.
kitas ištrinimo būdas, kurį galima naudoti, yra sed '/' $ 1 '/ d', bet jūs turite būti tikri dėl re.
tada baikite jį išsaugoti * .odt
Ar nėra lengvesnio būdo tai padaryti naudojant „LibreOffice“?
Ar galėtumėte ištrinti dalį eilutės, o likusią likti?
Tarkime, noriu ištrinti viską prieš žodį tam tikroje eilutėje.
Arba ištrinkite viską, kas seka tą žodį.
Taip, tai yra regexo ištraukimo klausimas (jei reikia, vyras sed -r, –regexp-pratęsė)
Pradedant tuo, ką randu
aidas «Robertas: Sveiki. Keisk čia »| sed 's / Change //'
su gerai apibrėžtu modeliu ir su. (vienas simbolis) ir * (daugiau nei vienas)
Po:
aidas «Robertas: Sveiki. Keisk čia »| sed 's / Change. * //'
Prieš:
aidas «Robertas: Sveiki. Keisk čia »| sed 's /. * Keisti //'
Jei svarbu, kad žodis pasirodys
aidas «Robertas: Sveiki. Keisk čia »| sed 's / Keisti. * / Keisti /'
ar labiau įmantrūs
eilutėje, kurioje yra Robertas, kas eina po pokyčių
aidas -e «Fritz: Sveiki. Keiskite čia \ nRobertas: Sveiki. Keisk čia »| sed '/Robert/s/Cambio.*//'
ar kaip pradžioje paimkite antrą eilutę, o likusias apdorokite
aidas -e «Fritz: Sveiki. Keiskite čia \ nRobertas: Sveiki. Keiskite čia \ nKita »| sed -e 2d -e 's / Keisti. * //'
aidas -e «Fritz: Sveiki. Keiskite čia \ nRobertas: Sveiki. Keiskite čia \ nKita »| sed '2d; s / Change. * //'
Ačiū, man tai labai naudinga.
Gražus straipsnis, kuris man patinka, kaip puiku „SysAdmin“!
Koks būtų mūsų gyvenimas be sed, awek, perl, grep, uodegos, galvos, „Emacs“ ir daugybės kitų būtinų įrankių!
Ačiū, tai buvo labai naudinga.
Sveiki, ir kaip galėtumėte ištrinti 1,4 ir 10 eilutes iš tos pačios komandos failo?