Tanácsok awk-ra
A rövidítések használata
A megadott maszknak megfelelő sorok kimenetére használt konstrukció:
lehet csökkenteni
Az awk állapotot zárójeleken kívül megadhatja, i. kapunk:
Alapértelmezés szerint a műveleteket a teljes karakterlánccal végzik, a $ 0 elhagyható:
print - az alapértelmezett művelet, akkor is el lehet hagyni:
A LEGO maszk jelenlétének sorának első oszlopának megjelenítéséhez:
A sor első oszlopának megjelenítéséhez a második oszlopban LEGO maszkra van szükség:
A LIGO szónak a LEGO-val való helyettesítéséhez és csak a megváltoztatott sorok kimenetéhez használhatja a következőket:
De ha azt akarjuk, hogy megjelenjen az összes sort (például sed „s / LIGO / LEGO /”), a szerkezet lehet egyszerűsíteni (1 - igaz minden sor):
Minden sor kivételével minden hatodik példány kivételével:
Nyomtatási vonalak 6-tól kezdődően (mint a tail -n +6 vagy a sed '1,5d'):
Kimeneti sorok, ahol a második oszlop értéke foo:
6 vagy több oszlopból álló kimeneti vonalak:
Kimeneti sorok foo és bar szavakkal:
Olyan kimeneti sorok, amelyeknek a neve foo, de nincs sáv:
Kimeneti sorok foo vagy bar szavakkal (mint a grep -e 'foo' -e 'bar'):
A nem üres sorok nyomtatása:
Minden sor törlése az utolsó oszlop tartalmának törlésével:
A sorszámok nyomtatása a tartalom előtt:
Csere parancs (kihagyva egy sort, szűrő húr és cserélje valami valami a bárban, majd lefordítja a kis- és levezetni az érték a második oszlop):
hasonló az awk-hez:
A tartományok használata
Nyomtasson egy karakterláncot, kezdve azzal a sorral, amelyben van foo, és véget ér a sorban, ahol van egy sáv:
A sor elhagyásával a megadott maszkokkal:
Optimálisabb lehetőség:
Csak a vonalat a záró bejegyzéssel (bar)
Kizárhatja csak a kezdeti előfordulással (foo)
Fájl megosztása sablonokkal
Van egy fájl, amelyben a vonalak csoportjait FOO1, FOO2, stb. Szükség van az FOO címkék közötti adatírásra a különböző fájlokban az FOO-ban megadott számoknak megfelelően.
A GNU Awk-ban ezt teheti:
CSV elemzése
Alapértelmezés szerint a határoló egy szóköz és egy lap. Más határoló, pl. Vessző megadása esetén az FS = ',' vagy a -F opciót kell használni.
Paraméterként szabályos kifejezést adhat meg, például:
De ez nem alkalmas a CSV értelmezésekor, mivel a rések lehetnek jelen belül a vonalak, így könnyebb vágni a vezető előtti és utáni szóközök a tizedes pont:
Ha az adatokat idézőjelbe, mert «field1" » CSV field2 », majd illesszük be a következő szkriptet:
De a forgatókönyvet javítani kell az űrlap mezők elemzéséhez:
field1, "field2, a, vesszőkkel". field3. «Field4, foo»
Két fájl összehasonlítása
Az összes ismétlődő vonal kimenete két nem rendszerezett fájlból: fájl1 és fájl2:
Csak kijelölt szövegblokkok megjelenítése
Például egy szöveges fájllal csak a következő szöveget használhatja fel: text =
a vonalszakadások formázásával: