Nowe posty

Autor Wątek: wyswietlanie danych co okreslony wiersz  (Przeczytany 10673 razy)

Gosik

  • Gość
wyswietlanie danych co okreslony wiersz
« dnia: 2012-09-26, 10:08:38 »
Witahcie!
Chciałabym wyświetlić dane co piąty wiersz. Czy moglibyście pi podpowiedzieć jak to można sprawnie zrobić za pomocą awk?

xavery

  • Gość
wyswietlanie danych co okreslony wiersz
« Odpowiedź #1 dnia: 2012-09-26, 14:09:59 »
Polecam użyć zmiennej NR podzielonej modulo przez pięć. Jak będzie widać, że coś samodzielnie zrobisz to i pomoc będzie w większym zakresie:)

xavery

  • Gość
wyswietlanie danych co okreslony wiersz
« Odpowiedź #2 dnia: 2012-09-26, 14:13:43 »
Cytat: Gosik
Witahcie!
Chciałabym wyświetlić dane co piąty wiersz.
A poza tym doprecyzuj czy chodzi o wyświetlenie co piątego wiersza czy dostawienie danych po każdym piątym wierszu. Tak czy owak w obydwóch wersjach należy podzielić NR modulo pięć.

snajper_8383

  • Gość
wyswietlanie danych co okreslony wiersz
« Odpowiedź #3 dnia: 2012-09-26, 15:40:32 »
Możesz też użyć sed do tego
sed -ne '0~5p' #tu plik do wyświetlenia
a kod do awk coś w tym stylu
awk '{if(!(NR % 5)) print $0}' #tu plik do wyświetelnia

Gosik

  • Gość
wyswietlanie danych co okreslony wiersz
« Odpowiedź #4 dnia: 2012-09-26, 23:18:13 »
Chodzilo mi o to, by co piaty wiersz byl wyswietlany wyraz.
Mamy cos takiego:
ala
ola
kasia


a ma wygladac w ten sposob:
ala




ola




kasia

Offline vanhelzing

  • Users
  • Prawie jak Guru
  • ****
  • Wiadomości: 314
    • Zobacz profil
wyswietlanie danych co okreslony wiersz
« Odpowiedź #5 dnia: 2012-09-27, 08:37:52 »
Może wstaw cztery puste linie pomiędzy wierszami?

snajper_8383

  • Gość
wyswietlanie danych co okreslony wiersz
« Odpowiedź #6 dnia: 2012-09-27, 10:33:16 »
Tu masz podręcznik do awk
http://e-portalik.net/awk/gawk_toc.html

xavery

  • Gość
wyswietlanie danych co okreslony wiersz
« Odpowiedź #7 dnia: 2012-09-27, 11:06:59 »
Cytat: snajper_8383
awk '{if(!(NR % 5)) print $0}' #tu plik do wyświetelnia
Nadmiarowo:)
Jak już się bawimy w rozwiązania to ładniej wygląda tak:

awk 'NR%5==0' plik
Ale oczywiście działa tak samo:)

xavery

  • Gość
wyswietlanie danych co okreslony wiersz
« Odpowiedź #8 dnia: 2012-09-27, 11:17:23 »
Cytat: Gosik
Chodzilo mi o to, by co piaty wiersz byl wyswietlany wyraz.
Mamy cos takiego:
ala
ola
kasia


a ma wygladac w ten sposob:
ala




ola
Skoro tak to trzeba to zrobić jak pisał Vanhelzing: zmienna $0 i cztery newline'y ("\\n").
Oczywiście można to zrobić na setki innych sposobów przy użyciu różnych narzędzi (sed, perl, bash...)

Gosik

  • Gość
wyswietlanie danych co okreslony wiersz
« Odpowiedź #9 dnia: 2012-09-27, 12:23:32 »
Dziekuje za pomoc. Chcialbym udoskonalic kod i nie uzywac ("\\n").

Mam co takiego:
 sed '0~1 a\\ ' proba.txt
Jednakze odstepy miedzy wierszami sa ogromne i nie mam pomyslu jak je zmniejszyc.

snajper_8383

  • Gość
wyswietlanie danych co okreslony wiersz
« Odpowiedź #10 dnia: 2012-09-27, 14:37:02 »
Polecenie a dopisuje za każdym wierszem to co jest po \\. U ciebie powinna to być spacja. Więc nie wiem czemu masz jakieś ogromne odstępy między wierszami. Zobacz może w twoim pliku tekstowym są jakieś odstępy i po prostu dodajesz kolejne.
A wypróbuj też takie coś:
sed -e 'i\\\\v\\v' proba.txt
Cytat: xavery
Jak już się bawimy w rozwiązania to ładniej wygląda tak:
awk 'NR%5==0' plik
Tak ładniej wygląda i zgrabniej.
Pozdro:)

Edit:
Masz tu linka jeszcze do opisu seda:
http://www.gentoo.org/doc/pl/articles/l-sed1.xml
Myślę, że lepiej abyś się pobawił z tym w awk.