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:
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 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 -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 "." 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 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:
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 '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 '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:
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 '{ 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 '/./=' 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 -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:
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 "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.
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
Kiváló hozzájárulás! Nagyon köszönöm!
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?