Köztudott, hogy a grafikus felülettel rendelkező programokat kényelmesebb használni, mert magas követelményekre tervezték őket, ráadásul a terminál segítségével sokkal gyorsabban megoldhatók bizonyos feladatok. Tehát van egy wc nevű segédprogram, ez képes megszámolni egy fájl sorainak számát. A sorok száma nem sokat mond, de abban az esetben, ha több parancsot kombinálunk, akkor a szükséges paraméterek figyelembevételével megszámolhatjuk a sorokat. Hogyan számoljuk meg a sorokat egy Linux fájlban? Emeljük ki néhány egyszerű, de hatékony példát a grep, sed és awk parancsok használatára.
A WC parancsot már megnéztük, most az egyik legfontosabb paraméterével -l
- kell megismerkednünk. Ez az új sorba való átmeneteket számolja, vagyis a teljes sort számolja, beleértve az üres sorokat is. A parancs az összes többinél gyorsabban megbirkózik a feladattal, de csak bizonyos karakterláncok - adott feltétel mellett - lehetségesek.
$ wc -l name_file
$ grep -c $ name_file
$ sed -n $= name_file
$ awk 'END{ print NR }' name_file
Mint látjuk, az eredmény ugyanaz, de a wc parancsnak kevesebb időbe telt a feladat elvégzése. A többi parancs összetett lekérdezéseknél alkalmazható. A grep paranccsal csak szöveges karakterláncokat kereshetünk: grep -c 'text' file_name
.
$ grep -c 'text' file_name
A grep parancs kezeli a reguláris kifejezéseket, így több AND, OR, NOT feltételt is kombinálhat.
Amikor a sed szövegfeldolgozást végez, de sokkal egyszerűbb a wc paranccsal elvégezni a végső sorszámlálást. Minden olyan sort törölhet, amely három karakternél rövidebb. és az összetett eseteket megjegyzések nélkül számolja.
$ sed -r '/^.{,3}$/d' file_name | wc -l
Ha a feladat egyszerű. más módon is elvégezhető. Az awk parancs egyszerűbb és könnyebben érthető lesz.
$ awk 'length >3' file_name | wc -l
Az awk parancs szemléletes példájaként végezzük el a karakterláncok számolását, miközben a csv táblázatos fájlban keressük a kívánt értéket.
A példában számoljuk meg azoknak a soroknak a számát, amelyek második paraméterének értéke nagyobb, mint 50.
$ awk '$2+0 > 50' file_name | wc -l
Adjunk 0-t a kifejezéshez, hogy minden nem numerikus kifejezést eltávolítsunk.