Toliau pateikiami keli scenarijai, kai gali reikėti pašalinti tarpus:
- Iš naujo suformatuoti šaltinio kodą
- Norėdami išvalyti duomenis
- Supaprastinti komandinės eilutės išvestis
Tarpus galite pašalinti rankiniu būdu, jei faile yra tik kelios eilutės. Bet failui, kuriame yra šimtai eilučių, bus sunku rankiniu būdu pašalinti visas tarpus. Šiam tikslui yra įvairių komandinės eilutės įrankių, įskaitant sed, awk, cut ir tr. Tarp šių įrankių „awk“ yra viena iš galingiausių komandų.
Kas yra Awk?
„Awk“ yra galinga ir naudinga scenarijų kalba, naudojama manipuliuojant tekstu ir kuriant ataskaitas. „Awk“ komanda yra sutrumpinta, naudojant kiekvieno jos (Aho, Weinbergerio ir Kernighano), kuri ją sukūrė, inicialus. „Awk“ leidžia apibrėžti kintamuosius, skaitines funkcijas, eilutes ir aritmetinius operatorius; kurti suformatuotas ataskaitas; ir dar.
Šiame straipsnyje paaiškinamas komandos „awk“ naudojimas apipjaustant tarpus. Perskaitę šį straipsnį, sužinosite, kaip naudoti komandą awk:
- Apkirpkite visas failo spragas
- Apkirpkite pirmaujančias tarpus
- Apkirpkite atotrūkius
- Apkirpkite tiek pirmaujančią, tiek galinę tarpą
- Pakeiskite kelias tarpus į vieną
Šiame straipsnyje nurodytos komandos buvo vykdomos naudojant „Ubuntu 20“.04 „Focal Fossa“ sistema. Tačiau tas pačias komandas galima atlikti ir kituose „Linux“ paskirstymuose. Šiame straipsnyje nurodytoms komandoms vykdyti naudosime numatytąją „Ubuntu Terminal“ programą. Galite pasiekti terminalą naudodami sparčiuosius klavišus „Ctrl + Alt + T“.
Demonstravimo tikslais naudosime pavyzdinį failą, pavadintą „pavyzdys.txt.“Atlikti šiame straipsnyje pateiktus pavyzdžius.
Peržiūrėkite visas baltąsias sritis faile
Norėdami peržiūrėti visas faile esančias spragas, perkelkite komandos cat išvestį į komandą tr taip:
$ katės pavyzdys.txt | tr "" "*" | tr "\ t" "&"Ši komanda pakeis visas nurodyto failo spragas simboliu (*). Įvedę šią komandą, galėsite aiškiai pamatyti, kur faile yra visi tarpai (įskaitant ir priekinius, ir galus).
Šios simbolio * simboliai rodo, kur pavyzdžio faile yra visi tarpai. Vienvietis * reiškia atskirą tarpą.
Apkirpkite visas baltąsias erdves
Norėdami iš failo pašalinti visas spragas, perkelkite komandą iš katės į komandą awk taip:
$ katės pavyzdys.txt | awk 'gsub (/ /, ""); spausdinti 'Kur
- gsub (reiškia globalų pakeitimą) yra pakeitimo funkcija
- / / vaizduoja baltąją erdvę
- „“ neatstovauja nieko (nukirpkite eilutę)
Pirmiau nurodyta komanda pakeičia visas tarpus (/ /) niekuo („“).
Šioje ekrano kopijoje galite pamatyti, kad visi tarpai, įskaitant priekines ir galines, buvo pašalinti iš išvesties.
Apkirpkite pirmaujančias tarpus
Norėdami pašalinti iš failo tik pagrindinius tarpus, perkelkite komandą iš katės į komandą awk taip:
$ katės pavyzdys.txt | awk 'sub (/ ^ [\ t] + /, ""); spausdinti 'Kur
- poskyris yra pakaitalo funkcija
- ^ reiškia eilutės pradžią
- [\ t]+ žymi vieną ar daugiau tarpų
- „“ neatstovauja nieko (nukirpkite eilutę)
Aukščiau pateikta komanda pakeičia vieną ar daugiau tarpų eilutės pradžioje (^ [\ t] +) niekuo („“), kad pašalintų priekinius tarpus.
Šioje ekrano kopijoje galite pamatyti, kad visi pagrindiniai tarpai buvo pašalinti iš išvesties.
Galite naudoti šią komandą, kad patikrintumėte, ar pirmiau nurodyta komanda pašalino pagrindines spragas:
$ katės pavyzdys.txt | awk 'sub (/ ^ [\ t] + /, ""); spausdinti '| tr "" "*" |tr "\ t" "&"
Žemiau pateiktoje ekrano kopijoje aiškiai matoma, kad pašalintos tik pagrindinės spragos.
„Trim“ pralenkia baltąsias erdves
Norėdami iš failo pašalinti tik galus esančius tarpus, perkelkite komandą iš katės į komandą awk taip:
$ katės pavyzdys.txt | awk 'sub (/ [\ \ t] + $ /, ""); spausdinti 'Kur
- poskyris yra pakaitalo funkcija
- [\ t]+ žymi vieną ar daugiau tarpų
- $ reiškia eilutės pabaigą
- „“ neatstovauja nieko (nukirpkite eilutę)
Pirmiau nurodyta komanda pakeičia vieną ar daugiau tarpų eilutės pabaigoje ([\ t] + $) niekuo („“), kad pašalintų galinius tarpus.
Galite naudoti šią komandą, kad patikrintumėte, ar pirmiau nurodyta komanda pašalino galinius tarpus:
$ katės pavyzdys.txt | awk 'sub (/ [\ t] + $ /, ""); spausdinti '| tr "" "*" | tr "\ t" "&"Iš žemiau pateikto ekrano aiškiai matosi, kad galiniai tarpai buvo pašalinti.
Apkirpkite tiek pirmaujančią, tiek galinę tarpą
Norėdami iš failo pašalinti tiek priekines, tiek galines tarpus, perkelkite komandą iš katės į komandą awk taip:
$ katės pavyzdys.txt | awk 'gsub (/ ^ [\ t] + | [\ t] + $ /, ""); spausdinti 'Kur
- gsub yra visuotinė pakeitimo funkcija
- ^ [\ t]+ atstovauja pirmaujančioms erdvėms
- [\ t] + $ žymi galines spragas
- „“ neatstovauja nieko (nukirpkite eilutę)
Pirmiau nurodyta komanda pakeičia ir priekinius, ir galinius tarpus (^ [\ t]+ [\ t] + $) nieko („“) jų pašalinti.
Norėdami nustatyti, ar pirmiau nurodyta komanda pašalino failo priekines ir galines tarpus, naudokite šią komandą:
$ katės pavyzdys.txt | awk 'gsub (/ ^ [\ t] + | [\ t] + $ /, ""); spausdinti '|tr "" "*" | tr "\ t" "&"
Iš žemiau pateikto ekrano aiškiai matosi, kad tiek priekiniai, tiek galiniai tarpai buvo pašalinti ir liko tik tarpai tarp eilučių.
Keletą tarpų pakeiskite viena erdve
Norėdami pakeisti kelis tarpus vienu tarpu, perkelkite komandą iš katės į komandą awk taip:
$ katės pavyzdys.txt | awk 'gsub (/ [] + /, ""); spausdinti 'Kur:
- gsub yra visuotinė pakeitimo funkcija
- []+ reiškia vieną ar daugiau tarpų
- „“ reiškia vieną baltą tarpą
Pirmiau nurodyta komanda pakeičia kelias tarpus ([] +) į vieną baltą tarpą („“).
Galite naudoti šią komandą, kad patikrintumėte, ar aukščiau nurodyta komanda kelis tarpus pakeitė tarpais:
$ katės pavyzdys.txt | awk 'sub (/ [\ t] + $ /, ""); spausdinti '| | tr "" "*" | tr "\ t" "&"Mūsų pavyzdiniame faile buvo kelios vietos. Kaip matote, pavyzdyje yra keli tarpai.Naudojant komandą awk, txt failas buvo pakeistas vienu tarpu.
Norėdami apkirpti tarpus tik tose eilutėse, kuriose yra konkretus simbolis, pvz., Kablelis, dvitaškis ar pusiau dvitaškis, naudokite komandą awk su -F įvesties skyriklis.
Pavyzdžiui, žemiau parodytas failo pavyzdys, kuriame kiekvienoje eilutėje yra tarpų.
Norėdami pašalinti tarpus tik iš eilučių, kuriose yra kablelis (,), komanda bus tokia:
$ katės pavyzdys.txt | awk -F, '/, / gsub (/ /, ""); spausdinti 'Kur (-F,) yra įvesties lauko skyriklis.
Pirmiau nurodyta komanda pašalins ir rodys tik tarpus tarp eilučių, kuriose yra nurodytas simbolis (,). Likusios linijos liks nepakeistos.
Išvada
Tai yra viskas, ką turite žinoti, kad apkarpytumėte savo duomenų tarpus, naudodami komandą awk. Pašalinti tarpus tarp duomenų gali reikėti dėl kelių skirtingų priežasčių. Nepriklausomai nuo priežasties, naudodamiesi šiame straipsnyje aprašytomis komandomis, galite lengvai apkarpyti visas savo duomenų spragas. Jūs netgi galite apkirpti priekines arba galines tarpus, apkirpti tiek priekines, tiek užpakalines tarpus ir pakeisti kelias tarpus viena vieta su komanda awk.