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:
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 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 -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 "." 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 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:
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 '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 'BEGIN{i=5} /.*/{printf "%d.% s\n",i,$0; i++}' archivo.txt
Naudokite šią komandą jei nenorite atsižvelgti į tuščias eilutes:
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 '{ 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 '/./=' 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 -n 7p archivo.txt
Naudojant komandą mažiau
į pridėkite numerį prie standartinės failo išvesties naudodami mažiau, paleisti:
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 "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.
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
Puikus indėlis! Labai ačiū!
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?