AWK szybko zdobył popularność w środowisku programistycznym ze względu na swoją prostotę, skuteczność i uniwersalność.

A czy wiesz jak powstał? Jeśli nie, to koniecznie wpadnij na naszego bloga, gdzie znajdziesz artykuł z krótką historią i genezą AWK.

Link do wpisu znajdziesz tutaj: https://blog.askomputer.pl/krotka-historia-i-geneza-awk/

#informatyk #informatyka #awk #it
asdevops - AWK szybko zdobył popularność w środowisku programistycznym ze względu na ...

źródło: 393510528_122103703154075368_3603921288341788957_n

Pobierz


Pod tagiem #devopsiarz (obserwuj lub czarnolistuj) publikuję od czasu do czasu informacje o ciekawych programach,
bibliotekach z działki #devops i nie tylko - najczęściej #golang i #python, ale też #rustlang i #haskell

Pełna wersja tego zestawienia https://devopsiarz.pl/zestawienia/zestawienie-linkow-materialow-04-05-2020/

A jeśli chcesz jeszcze więcej, zapisz się do mailingu https://devopsiarz.pl/newsletter/zapisz/

Jeśli chcesz, aby Cię tu wołać do moich materiałów, zapisz się do mirkolisty https://devopsiarz.pl/mirkolista

Jeśli zestawienie uważasz za
7) https://bmcbioinformatics.biomedcentral.com/articles/10.1186/s12859-019-2903-5 #java #golang #cpp


Dosyć obszerne porównanie w formie badania trzech języków: Go, Java i C++. Według tego

badania Go okazało się najlepszym kompromisem w związku z wydajnością, z tym, że tutaj według mnie na siłę "wcisnęli" do C++ znany algorytm do GC, co spowodowało, że C++

wychodzi w niektórych testach na powolny. Generalnie artykuł warto przeczytać, ale

według mnie dużo biasu w nim jest.


@devopsiarz: akurat ten algorytm GC
#linux #awk #sed
Mireczki, mam do zrobienia takie zadanie:

"Z wyników zwracanych przez polecenie ifconfig wybierz informacje o adresie IP oraz adresie
MAC wszystkich aktywnych kart sieciowych. Informacje te zapisz do pliku interfaces.txt,
który powinien zawierać trzy kolumny: intname, ipaddress, mac_address a kazdy wiersz
opisywać określoną, aktywną kartę."

Moje pytanie jest takie, w jaki sposób mogę "wyciąć" informacje o adresie IP i MAC, a następnie przenieść do osobnego pliku przy
#regexp #sed #awk #programowanie
Poproszę o pomoc z windowsowym (gnuwin32) awk/gawk/sed lub alternatywą pod windowsem.

Pliki z danymi wejściowymi mają format (przykładowy wiersz)
yzz-0000001000-v1000,"54,76","54,76",0,"54,76","54,76"
Chcę otrzymać
yzz-0000001000-v1000;54,76;54,76;0;54,76;54,76
czyli zmienić separatory między polami z przecinka na średnik, jednocześnie nie zmieniajac separatorów części ułamkowych.

Znalazlem w sieci sugestie regexpa

/(,)(?=(?:[^"]|"[^"]*")*$)/
i na testerze online jest ok, ale nie potrafię wyescapować tak by działało.

gawk "{gsub(/(,)(?=(?:[^\""]|\""[^\""]*\"")*$)/,\""x\""); print}" plikwejsciowy
nie zmienia nawet pierwszego przecinka.
Co robię
Interesujące, ale racji obostrzeń (i drobnego wpływu wina które skonsumowalem ;)) sugeruję rozbicie po prostu na trzy przejscia, w pierwszym łap "\d+,\d+," jako grupę i zamieniaj drugi przecinek na srednik, w drugim [a-Z-0-9]*, by tez pierwszy srednik zalatwic w trzecim wiadomo, wywalic cudzyslowie. W tym stanie niestety to najlepsza podpowiedz jaka moga zaoferowac :)
@uhu8
witam wszystkich czy ktoś ogarnia programowanie w awk mam napisać program w którym będzie można : dodawać nowego klienta
dodawać nowy samochód
Usuwać użytkownika
usuwać samochód
sprzedaż samochodu
Modyfikacja atrybutów opisujących użytkownika i samochodu , np.. aktualizacja informacja,
Wyświetlenie listy użytkowników (posortowanych z możliwością sortowania po dowolnych atrybutach)
wyświetlanie listy samochodów posortowanych z możliwością sortowania po dowolnych atrybutach)

informacje mają być w txt , ogarnia ktoś i pomoże napisać kod ?

#
jak w #awk w #linux dostać się do zamienionych pól przez gensub?

/.*(192\.168\.0\.2[4-5][0-9]+).*up/ { result = gensub(/192\.168\.0\.(2[4-5][0-9]+)/, "\1", "g") ; print $4" "result > "t.log";}

w result mam podmienione pole i jest to cały wiersz a chcę wydrukować tylko jedno pole z result.
Potrzebuję porady. Próbuję ogarnąć awk, ale średnio mi to idzie. Mam ścianę tekstu

---TRANSACTION 1234, not started
---TRANSACTION 5325, not started
---TRANSACTION 8706456, ACTIVE 849 sec
2 lock struct(s), heap size 360, 1 row lock(s)
MySQL thread id 26674, OS thread handle 0x7f2426942700,
---TRANSACTION 64363, not started

Zależy mi, żeby wyłapać aktywne transakcje, ale tylko aktywne - powiedzmy - powyżej 100 sekund. Jeśli znajdzie, ma wypluć kolejne 3 linie.
Na razie mam
Czy jest tu jakiś Mirek, który zna się na #programowanie w #awk?
Mam dwa pliki:
PLIK 1:
1 123123 890987 adasd poiuytr qwerty
2 123123 890987 adasd poiuytr qwerty
3 123123 890987 adasd poiuytr qwerty
4 123123 890987 adasd poiuytr qwerty
5 123123 890987 adasd poiuytr qwerty
6 123123 890987 adasd poiuytr qwerty
7 123123 890987 adasd poiuytr qwerty
8 123123 890987 adasd poiuytr qwerty
9 123123 890987 adasd poiuytr qwerty
@ncpnc:



















Mirki spod tagu #programowanie.
Mam dwa pliki:
1) zajmuje 5GB i jest w nim 150mln wierszy "nazwa liczba1 liczba2"
2) zajmuje 60MB i jest w nim 150k wierszy "nazwa liczba0"

Da się je skutecznie (tj. w rozsądnym czasie) połączyć względem kolumny "nazwa"?
W pliku wynikowym (będzie zajmował pewnie ze 200MB) mają być "nazwa liczba0 liczba1 liczba2".
Próbowałem w #python wczytać 150k wierszy - da się ( ͡° ͜ʖ ͡
@Alkreni: Ogólnie to zadanie jest proste, tylko trzeba ogarnąć sposób na uniknięcie pętli o złożoności O(n*m).
Merge-sort join dla posortowanych wejść ma złożoność O(n+m).
Posortowanie pewnie można tutaj ogarnąć w czasie O(n+m), jeśli linie podają się sortowaniu kubełkowemu wg jakiegoś algorytmu.
Kubełki można matchować nawet z użyciem GPU lub wielowątkowo.

IMHO dobra implementacja na SSD + i5 powinna się wykonywać najwyżej 5 minut.
Dla kompletności:

$ echo '/dev/sda6: UUID="785b1416-ffbf-43e2-8a5c-052"' | awk -F: '{print $1}'

/dev/sda6

$ echo '/dev/sda6: UUID="785b1416-ffbf-43e2-8a5c-052"' | sed -r 's/:.*$//'

/dev/sda6