BASH: Tuščių eilučių šalinimas iš failo
Būdų kaip iš failo pašalinti tuščias eilutes yra daug. Tačiau šiandien, pradėdamas naują rubriką šiame tinklaraštyje papasakosiu kaip tą padaryti BASH pagalba. Tai turėtų veikti naudojant ir kitus konsolių apvalkus, tokius kaip zsh. Pastarąjį, beje, pats ir naudoju, būtent dėl to jį ir paminėjau.
Pats negeek'iškiausias sprendimas yra tiesiog panaudoti jau sukurtą internetinį įrankį. Tačiau geek'ams, kurie nori viską padaryti kaip įmanoma sunkiau ir mažiau suprantamai ne IT žmonėms - šis variantas netiks.
Tuščių eilučių šalinimui galime drąsiai panaudoti sed, tr arba grep komandas. Aprašysiu kaip tai galima padaryti kiekvienu atveju.
Naudojame lengvąjį variantą - GREP komandą
Pašalinti tuščias eilutes galime labai paprastu būdu grep komanda:
grep . failo_vardas
Taip pat, duomenis be tuščių eilučių galime iškart išsaugoti į kitą failą tiesiog nukreipdami išvestį:
grep . failo_vardas > failo_vardas_be_tuščių_eilučių
Tokį patį rezultatą galime gauti praleidžiant tuščias eilutes su grep komanda ir išvesti tik tas eilutes, kurios neatitinka tuščios eilutės taisyklės:
grep -v '^$' failo_vardas
Parametras -v randa tik tai, kas neatitinka duotosios sąlygos. Šiuo atveju parašyta reguliarioji išraiška ^$ atitinka tuščią eilutę, kadangi simbolis ^ reiškia pradžią, o $ reiškia pabaigą.
SED - sudėtingiau, bet taip pat įmanoma
Būtent tokį patį rezultatą galime gauti ir su sed komanda:
sed '/^$/d' -i test
Šioje komandoje atliekame tą patį. Tiesa, čia gali gąsdinti d argumentas, kuris tik pašalina rastą išraiškos reikšmę. O komandinės eilutės argumentas -i leidžia nurodyta failą, kuriame iškart bus atliktas šalinimas. Žinoma, pastarojo argumento galime ir nenurodyti.
TR komanda į pagalbą
Ypatingai dažnai praverčia šios komandos paprastumas keičiant tam tikrus simbolius išvestyje. Taigi, galime pakeisti naujos eilutės simbolį į nieką ir gausime norimą rezultatą:
tr -s '\n' < failo_vardas
Failo, su tuščiomis eilutėmis, turinį nukreipėme į tr komandą pasinaudodami BASH išvesties nukreipimo operacija < failo_vardas.