Pridėkite eilutės numerius prie standartinių terminalo tekstinių failų išvesties

apie eilučių pridėjimą

Kitame straipsnyje pamatysime keletą būdų pridėti eilutės numerius į tekstinius failus kad mes vizualizuojame iš terminalas. Jei kada pagalvojote, kaip pridėti šiuos eilučių numerius į standartinę „Gnu / Linux“ tekstinių failų išvestį, šiame trumpame straipsnyje bus bandoma paaiškinti įvairius būdus tai padaryti.

Yra keli būdai, kaip pridėti eilutės numerius į teksto failą. Toliau pamatysime 6 skirtingus metodus, kaip tai padaryti. Įsivaizduoju, kad be tų, kurie bus matomi žemiau, bus keletas kitų būdų, tačiau pirmiausia jų pakanka.

Pridėkite eilutės numerius prie standartinio teksto failo išvesties

Pirmiausia mes sukursime failą, vadinamą file.txt. Joje aš pridėsiu keletą eilučių, kad pateikčiau turinį, kuris bus identifikuotas. Norėdami pamatyti ką tik sukurto failo turinį, atidarysime terminalą (Ctrl + Alt + T) ir jame parašysime:

kačių linijos

cat archivo.txt

Naudojant komandą nl

Kaip matyti iš komandos cat išvesties, faile yra 10 eilučių, iš kurių trys tuščios. Pridėsime eilučių numerius naudodami nl komanda. Norėdami tai padaryti, paleiskite:

nl linijos

nl archivo.txt

Kaip matyti iš ankstesnio užfiksavimo, komanda nl nepaiso tuščių eilučių. Tiesiog pridėkite skaičius prie tuščių eilučių. Jeigu nori sunumeruoti visas eilutes, įskaitant tuščias eilutes, paleiskite:

nl -ba linijos

nl -b a archivo.txt

Be to, kad būtų aiškiau skaitant rezultatą, galime po skaičiais pridėkite simbolį. Pvz., Norėdami pridėti skaičių po skaičių, paleiskite:

nl -s taškinės linijos

nl -s "." archivo.txt

Jūs galite palinkėti sulyginti išvesties plotį. Norėdami tai padaryti, naudokite -w variantas su kintama verte kaip parodyta taip:

nl w3 eilučių

nl -w3 archivo.txt

Naudojant katės komandą

Komanda katė naudojama failo turiniui rodyti, kaip parodyta pirmoje šio straipsnio ekrano kopijoje. Jei norite pridėti skaičius prie failo išvesties, naudoti -n kaip parodyta taip:

katė -n linijos

cat -n archivo.txt

Jums gali būti įdomu perduoti standartinę išvestį į naują failą. Norėdami tai padaryti, tiesiog turite paleisti komandą, kaip parodyta žemiau:

cat -n archivo.txt > nuevoarchivo.txt

Naudojant komandą awk

Tai yra bene pats sudėtingiausias gauto rezultato metodas. Pridėti eilučių numeriai į failo išvestį naudojant komandą awk, paleisti:

awk linijos

awk 'BEGIN{i=1} /.*/{printf "%d.% s\n",i,$0; i++}' archivo.txt

Kaip matėte, aš paskyriau pradinis numeris kaip 1 parametre BEGIN. Mes galime priskirti bet kurį kitą jūsų pasirinktą pradinį numerį, pavyzdžiui, 5, kaip matyti toliau:

awk pradžia 5

awk 'BEGIN{i=5} /.*/{printf "%d.% s\n",i,$0; i++}' archivo.txt

Naudokite šią komandą jei nenorite atsižvelgti į tuščias eilutes:

awk jokių tuščių eilučių

awk 'BEGIN{i=0} {if($0 !~ /^$/) {printf ("%d.%s \n",i,$0); i++} else { print $0} } ' archivo.txt

Jei manote, kad pirmiau nurodytas komandas yra šiek tiek sunku prisiminti, naudokite šią komandą, kuri suteiks jums tą patį rezultatą, kaip ir pirmasis, parodytas komandoje AWK:

awk fnr

awk '{ print FNR " " $0 }' archivo.txt

Naudodamas sed komandą

Norėdami pridėti eilutės numeris iki standartinio failo išvesties naudojant komandą sed, paleisti:

sed linijos

sed '/./=' archivo.txt | sed '/./N; s/\n/ /'

„Sed“ komanda turi paminėti puikią savybę. Gali rodyti konkrečią failo eilutę. Pavyzdžiui, norėdami parodyti septintąją failo eilutę, paleiskite:

sed betono linija

sed -n 7p archivo.txt

Naudojant komandą mažiau

į pridėkite numerį prie standartinės failo išvesties naudodami mažiau, paleisti:

mažiau -n

less -N archivo.txt

Naudojant komandą grep

Grep komanda gali būti naudojama ieškant eilutės, kurioje yra konkretus tekstas. Jei norite pridėti eilučių numerius prie eilučių, kuriose yra ieškomas tekstas, paleisti:

grep -n

grep -n "línea" archivo.txt

Atminkite, kad ši komanda pridės skaičius tik prie eilučių, kuriose yra paieškos eilutė. Be to, kaip matyti ekrano kopijoje, jis nuspalvina ieškomą tekstą. Visa kita pateiktame faile bus praleista.

Ir viskas, net aš turiu tai pasakyti šios komandos turi kitas galimybes, kurias jos gali papildyti arba išplėsti tie, kurie buvo aprašyti šiame straipsnyje. Norėdami gauti daugiau informacijos apie čia pavadintas komandas, galite kreiptis į vyro puslapiai.


Palikite komentarą

Jūsų elektroninio pašto adresas nebus skelbiamas. Privalomi laukai yra pažymėti *

*

*

  1. Atsakingas už duomenis: Miguel Ángel Gatón
  2. Duomenų paskirtis: kontroliuoti šlamštą, komentarų valdymą.
  3. Įteisinimas: jūsų sutikimas
  4. Duomenų perdavimas: Duomenys nebus perduoti trečiosioms šalims, išskyrus teisinius įsipareigojimus.
  5. Duomenų saugojimas: „Occentus Networks“ (ES) talpinama duomenų bazė
  6. Teisės: bet kuriuo metu galite apriboti, atkurti ir ištrinti savo informaciją.

  1.   niekas sakė

    nereikia ieškoti reguliarių posakių „/.*/“ awk komandose
    pagal nutylėjimą jis jau padalija failą į eilutes, o $ 0 yra eilutė, taigi

    awk 'BEGIN {i = 1} {printf "% 03d:% s \ n", i, 0 USD; i ++} 'file.txt

    veikia taip pat (ir geriau) nei

    awk 'BEGIN {i = 1} /.*/[printf "% d.% s \ n", i, 0 USD; i ++} 'file.txt

  2.   Miguelio Quintanos vietos rezervavimo ženklo vaizdas sakė

    Puikus indėlis! Labai ačiū!

  3.   rodrigo mėnulis sakė

    Prieš pradedant draugišką sveikinimą.

    Čia turiu klausimą dėl šio scenarijaus.

    Informacija apie paieškas atitinkančias eilutes gaunama iš failo ir saugoma kintamajame.
    pavyzdys:
    reikšmės = `awk -F«: »'{print $ 1» »$ 2» »$ 3}' hociporky | grep "201025" -n`

    Tada kartojate kintamąjį ir ieškote faile konkrečios eilutės.
    pavyzdys:
    už vertę $ reikšmėmis; padaryti
    sed -n „$ {value} p“ failas
    Done

    Bet tai siunčia klaidą
    sed: -e išraiška # 1, char 1: nežinoma komanda: "

    Ar kas nors galėtų man paaiškinti, kodėl ir kaip tai būtų galima išspręsti?