Adja hozzá a sorszámokat a terminál szöveges fájljainak szabványos kimenetéhez

a sorok hozzáadásáról

A következő cikkben megismerhetünk néhány módot sorszámokat adhat hozzá a szöveges fájlokhoz hogy a terminál. Ha valaha arra gondolt, hogyan lehet ezeket a sorszámokat hozzáadni a Gnu / Linux szövegfájljainak szabványos kimenetéhez, ez a rövid cikk megpróbálja elmagyarázni ennek különböző módjait.

Számos módon lehet sorszámokat hozzáadni egy szövegfájlhoz. Ezután 6 különböző módszert fogunk meglátogatni. Úgy képzelem, hogy azokon kívül, amelyeket alább láthat, láthat még néhány módot, de kezdetként ezek elégek.

Add hozzá a sorszámokat a standard szövegfájl kimenethez

Először is létrehozunk egy nevű fájlt file.txt. Ebben hozzáadok néhány sort a tartalom megadásához, amelyet azonosítani fogunk. Az imént létrehozott fájl tartalmának megtekintéséhez megnyitjuk a terminált (Ctrl + Alt + T), és beírjuk:

macska vonalak

cat archivo.txt

Az nl parancs használatával

Amint a cat parancs kimenetéből látható, a fájl 10 soros, három közülük üres. A sorszámokat hozzáadjuk a nl parancs. Ehhez futtassa:

nl vonalak

nl archivo.txt

Amint az előző felvételen látható volt, az nl parancs figyelmen kívül hagyja az üres sorokat. Csak adja hozzá a számokat a nem üres sorokhoz. Ha akarod számozzon minden sort, beleértve az üres sorokat is, futtassa:

nl -ba sorok

nl -b a archivo.txt

Ezenkívül a nagyobb egyértelműség érdekében az eredmény olvasása során megtehetjük adjon hozzá egy szimbólumot a számok után. Ha például egy pontot szeretne hozzáadni a számok után, futtassa:

nl -s pontvonalak

nl -s "." archivo.txt

Kívánhatja igazítsa a kimeneti szélességet. Ehhez használja a -w opció változó értékkel amint azt a következők mutatják:

nl w3 sor

nl -w3 archivo.txt

A macska parancs használatával

A cat parancs a fájl tartalmának megjelenítésére szolgál, amint az a cikk első képernyőképén látható. Ha számokat szeretne hozzáadni egy fájl kimenetéhez, használja -n amint azt a következők mutatják:

macska -n vonalak

cat -n archivo.txt

Lehet, hogy érdekel adja át a standard kimenetet egy új fájlba. Ehhez csak futtatnia kell a parancsot az alábbiak szerint:

cat -n archivo.txt > nuevoarchivo.txt

Az awk parancs használatával

Talán ez a legösszetettebb módszer a kapott eredményhez. Hozzáadni sorszámok a kimenetbe az awk paranccsal, fuss:

awk vonalak

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

Amint láttad, kijelöltem a kezdő szám mint 1 a BEGIN paraméterben. Rendelhetünk tetszőleges más kezdeti számot, például 5-öt, amint az alább látható:

awk 5-kor kezdődik

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

Használja a következő parancsot ha nem akarja figyelembe venni az üres sorokat:

nincs üres sor

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

Ha úgy gondolja, hogy a fenti parancsokat kissé nehéz megjegyezni, használja a következő parancsot, amely ugyanazt az eredményt adja, mint az első, amelyet az AWK paranccsal mutatunk be:

awk fnr

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

A sed parancs használatával

A sorszám a fájl normál kimenetéhez a sed paranccsal, fuss:

sed vonalak

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

A sed parancsnak meg kell említenie egy jó tulajdonságot. Tud egy fájl adott sorát jeleníti meg. Például a fájl hetedik sorának megjelenítéséhez futtassa:

sed beton vonal

sed -n 7p archivo.txt

A kevesebb parancs használatával

hogy csatolja a számot egy fájl szabványos kimenetéhez kevesebbet használva, fuss:

kevesebb -n

less -N archivo.txt

A grep paranccsal

A grep paranccsal olyan szöveget lehet keresni, amely meghatározott szöveget tartalmaz. Ha akarod adja hozzá a sorszámokat a keresett szöveget tartalmazó sorokhoz, fuss:

grep -n

grep -n "línea" archivo.txt

Ne feledje, hogy ez a parancs csak azokat a sorokat adja hozzá, amelyek tartalmazzák a keresési karakterláncot. Továbbá, ahogy a képernyőképen látható, színezi a keresett szöveget. Az adott fájl minden mást átugorunk.

És ennyi, még nekem is ezt kell mondanom ezek a parancsok más lehetőségekkel is kiegészíthetik vagy kiterjeszthetik azokat, amelyeket ebben a cikkben leírtak. Az itt megnevezett parancsokról további információt a man oldalak.


A cikk tartalma betartja a szerkesztői etika. A hiba bejelentéséhez kattintson a gombra itt.

3 hozzászólás, hagyd a tiedet

Hagyja megjegyzését

E-mail címed nem kerül nyilvánosságra.

*

*

  1. Az adatokért felelős: Miguel Ángel Gatón
  2. Az adatok célja: A SPAM ellenőrzése, a megjegyzések kezelése.
  3. Legitimáció: Az Ön beleegyezése
  4. Az adatok közlése: Az adatokat csak jogi kötelezettség alapján továbbítjuk harmadik felekkel.
  5. Adattárolás: Az Occentus Networks (EU) által üzemeltetett adatbázis
  6. Jogok: Bármikor korlátozhatja, helyreállíthatja és törölheti adatait.

  1.   senki dijo

    az awk parancsokban nem kell reguláris kifejezéseket keresni "/.*/"
    alapértelmezés szerint már sorokra osztja a fájlt, a $ 0 pedig tartalmazza a sort, tehát

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

    ugyanúgy (és jobban) működik, mint

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

  2.   Miguel Quintana helyőrző kép dijo

    Kiváló hozzájárulás! Nagyon köszönöm!

  3.   rodrigo hold dijo

    Mielőtt barátságos üdvözletbe kezdenénk.

    Itt van egy kérdésem a következő forgatókönyvvel.

    A keresésnek megfelelő sorokra vonatkozó információkat fájlból nyerik, és egy változóban tárolják.
    Példa:
    értékek = `awk -F«: »'{print $ 1» »$ 2» »$ 3}' hociporky | grep "201025" -n "

    Ezután iterál a változón, majd egy adott sort keres a fájlban.
    Példa:
    az érték $ értékekben; csináld
    sed -n "$ {value} p" fájl
    csinált

    De ez hibát küld
    sed: -ee # 1 kifejezés, char 1: ismeretlen parancs: `

    Meg tudná valaki magyarázni nekem, hogy miért és hogyan lehetne ezt megoldani?

bool (igaz)