Nowe posty

xx Problem ze sterownikami. (5)
2024-04-13, 21:25:16
xx Instalacja xfce4 (2)
2024-04-13, 16:20:17
xx Serie kompilacji bez instalacji dla “emerge” w Gentoo (2)
2024-04-08, 18:40:04
xx Plasma 6 w Neonie ssie trochę mniej ... (17)
2024-04-05, 10:03:46
xx Problem z Linux Lite po instalacji (3)
2024-04-03, 14:23:40
xx Jak właczyć num locka przy starcie systemu debian 12? (12)
2024-04-02, 17:43:54
xx Brak dźwieku w systemie. (5)
2024-04-02, 16:13:41
xx Dystrybucja pod HP Omen (7)
2024-03-29, 11:33:05
xx [Poradnik] Wyszukiwanie Sterowników (2)
2024-03-27, 21:08:23
xx Ile pingwinów? (1)
2024-03-27, 08:59:24

Autor Wątek: Wyciąganie z pliku wielu słów i zapisywanie ich w innym pliku.  (Przeczytany 2100 razy)

Geeko

  • Gość
Witam, mam następujący problem.
Dostałem plik z dużą ilością tekstu, z którego muszę wyciągnąć wszystkie linki do stron internetowych i jak często występowały po czym zapisać to w oddzielnym pliku. Dzikim szaleństwem byłoby gdyby układały się w tabeli ale to jestem już w stanie, ewentualnie, zrobić ręcznie, najważniejsze jest wyszukiwanie wszystkiego co jest linkiem do strony i ile razy każdy link występuje.
Podejrzewam, że będzie to pewna wariacja grep, ale nie bardzo wiem jaka. Proszę was o pomoc. Z góry dziękuję.

quejinho

  • Gość
Wyciąganie z pliku wielu słów i zapisywanie ich w innym pliku.
« Odpowiedź #1 dnia: 2015-05-06, 09:48:47 »
Nie musi to być grep.
Wybierz sobie jakiś język skryptowy np. perl .
wczytaj plik, potem przerzuć go  regexpem, wyrzuć znaczniki zapisz, do pliku .

Geeko

  • Gość
Wyciąganie z pliku wielu słów i zapisywanie ich w innym pliku.
« Odpowiedź #2 dnia: 2015-05-06, 11:02:36 »
Dzięki wielkie, ale mogę potrzebować odrobinę dokładniejszych instrukcji, np. z działania regexpa. Python brzmi jak plan, w sumie zbierałem się już od jakiegoś czasu, żeby czegoś się z niego nauczyć.

quejinho

  • Gość
Wyciąganie z pliku wielu słów i zapisywanie ich w innym pliku.
« Odpowiedź #3 dnia: 2015-05-06, 12:05:48 »
np. perl :

open(LOGFILE, "super.txt");
my @line=;
close LOGFILE;    

i mamy zapisaną tablice z twoim plikiem .

i coś w rodzaju

/(.*?)/mg

jako do regexpa.



Linki dla ciebie
tutaj jakieś przykłady do perla akurat :
http://www.tutorialspoint.com/perl/perl_regular_expression.htm

coś co tygryski lubią najbardziej :
http://www.regexr.com/

Offline 1709

  • Users
  • Guru
  • *****
  • Wiadomości: 2765
  • 1709
    • Zobacz profil
Wyciąganie z pliku wielu słów i zapisywanie ich w innym pliku.
« Odpowiedź #4 dnia: 2015-05-06, 13:20:09 »
- Bez przykladu to troche ciezko.
- Jaki jest problem z grepem ?
- Znalazlem cos takiego
http://stackoverflow.com/questions/3005740/regex-to-find-external-links-from-the-html-file-using-grep

Tyle ze jest to do pliku html, wiec rozumiem czemu polecono regexp,
czy plik jest czyms w rodzaju html?
PS: Brak polskiej czcionki, nie jest to brak lenistwa, a jej brak w systemie i brak czasu na reczne poprawki.

Geeko

  • Gość
Wyciąganie z pliku wielu słów i zapisywanie ich w innym pliku.
« Odpowiedź #5 dnia: 2015-05-06, 14:03:03 »
Plik jest typu .log z grepem jest ten problem, ze potrafię za jego pomocą policzyć słowa, ale do drugiego pliku w tym momencie zapisuje mi się tylko ogromna liczba(bo policzył słowa i, zgodnie z prośbą przesłał ich liczbę :P. Komenda wyglądała mniej więcej "grep -c > ), nie wiem jak zrobić żebym miał każdy znaleziony w tym pliku link i ilość wystąpień np.
link1 655 wystąpień
link2 6455 wystąpień
itp.

Offline Paweł Kraszewski

  • Administrator
  • Guru
  • *****
  • Wiadomości: 3056
  • Lenistwo jest matką potrzeby = babcią wynalazku
    • Zobacz profil
Wyciąganie z pliku wielu słów i zapisywanie ich w innym pliku.
« Odpowiedź #6 dnia: 2015-05-06, 14:41:54 »
Jak długo nie pokażesz paru linijek z parsowanego pliku, tak długo mimo najszczerszych chęci nie możemy więcej pomóc...
Paweł Kraszewski
~Arch/Void/Gentoo/FreeBSD/OpenBSD/Specjalizowane customy

Offline 1709

  • Users
  • Guru
  • *****
  • Wiadomości: 2765
  • 1709
    • Zobacz profil
Wyciąganie z pliku wielu słów i zapisywanie ich w innym pliku.
« Odpowiedź #7 dnia: 2015-05-06, 21:05:02 »
Przyklad
#!/bin/sh

cat nazwa_pliku | grep "www." | sort > plik_linki
Edytowane:
Z kazdej lini jeszcze trzeba oddzielic link od reszty,
jesli wystepuje regularnosc mozna uzyc cut,
jesli nie to wtedy trzeba poszukac innego sposobu, np.
wypisac slowa w kazdej linii i znowu uzyc grepa.

Edytowane:
Co do seda to nie jestem pewien musialbym podac przyklad,
by udowodnic ze sie da

Przyklad z grepem:
 cat plik_linki  | grep -o  '\\S*http\\S*']
Do tego mozna dodac pentelke, ja to robie w ten sposob:
		# liczba lini w pliku
cb=$(cat -n plik_linki | tail -1 | awk '{print $1}')

               
               # pentelka wykonuje sie tyle razy ile lini w pliku linki
for i in `seq 1 $cb`
do

        cc=$(awk 'NR=='$i plik_linki)
      # linia z pliku ( bedzie pokazywac linie kazda az zakonczy pentle)

                 (tu cos musisz zrobic, wymyslec w jaki sposob skrypt ma np. porownywac linie , np. poprzez zapisanie lini do innej zmiennej lub pliku i porownanie,
jesli bedzie taka sama to zacznie zliczac)
                 done
PS: Brak polskiej czcionki, nie jest to brak lenistwa, a jej brak w systemie i brak czasu na reczne poprawki.