Last active
August 29, 2015 14:07
-
-
Save 3h4x/0ada626de7fe3dd206e5 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
COUNTER=/tmp/kernel_lines # zmienna odwolujaca sie do pliku w ktorym beda ilosci linii | |
if [[ ! -f $COUNTER ]]; then echo 0 > /tmp/kernel_lines; fi # jesli nie ma pliku z liniami to go stworz i upchnij tam 0 | |
NUM=`cat $COUNTER` # ogarnij ile linijek juz jest w pliku $COUNTER | |
LINES=`sed '/\/\*/,/*\//d' $1 | sed '/^\/\//d' | sed '/^$/d' | wc -l` # wypierdol komentarze z C | |
echo "$NUM + $LINES" # pokaz ze umiesz dodac to gowno | |
echo $((NUM+LINES)) > $COUNTER # zapisz to gowno | |
# rozkminka | |
#--- | |
# sedujemy $1 - $1 to lokalizacja naszego pliku wejsciowego, ktory podajemy przez FIND -> {} | |
# czyli za każdym razem jak find znajduje plik *.c to {} oznacza sciezke i nazwe pliku, mozesz to zwizualizowac sobie robiac echo $1 | |
# SED | |
# mamy zazwyczaj cos takiego 'komenda sedowa/wyrazenie regularne/wyrazenie regularne/opcje', 'komenda/regexp/opcje', lub 'K/R/R/F,K/R/R/F' | |
# / jest naszym separtorem, wiec logiczne czesci seda sa oddzielone od siebie / | |
# '/\/\*/,/\*\//d' co to robi? | |
# w całym pliku znajdź /* i leć dalej aż dojdziesz do */. jak tak się stanie to wypierdol kazda linijke ktora znalazles | |
# rozdzielmy to na dwie części: | |
# pierwsza /\/\*/ | |
# najbardziej zewnętrzne / są po prostu separatorami wyrażenia regularnego, mięsko jest w środku | |
# po ich odjeciu zostaje nam \/\* czyli wyrażenie regularne, będzie ono odpowiadało znalezieniu ciągu znaków /*, ale w sedzie musimy to wescepować gdyz każdy z nich ma znaczenie specjalne (/ jest naszym separatorem, a * oznacza dowolną ilość znaków) | |
# druga /\*\// | |
# \*\/ (*/) ownięte w separatory / | |
# na koncu mowimy sedowi co zrobić z tym -> wypierdol wszystkie linijki zmatchowane (d od delete) | |
# sed '/^\/\//d' | |
# bierzemy regexpa ze srodka | |
# ^\/\/ czyli jeśli na początku linii znajdziesz // to wypierdol linijkę (^ wskazuje początek linii) | |
# sed '/^$/d' | |
# ostatnie dla smaczku | |
# $ oznacza koniec linii, wiec calosc = wypierdol wszystkie puste linie |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment