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:

Hasznos linkek a témában:

Kapcsolódó cikkek