[Bash] Wyswietlanie lwartości co określony wiersz

Mat.Monia
Użytkownik
Użytkownik
Posty: 105
Rejestracja: 2 paź 2008, o 19:56
Płeć: Kobieta
Lokalizacja: Bydgoszcz
Podziękował: 7 razy
Pomógł: 2 razy

[Bash] Wyswietlanie lwartości co określony wiersz

Post autor: Mat.Monia »

Witajcie!
Mam plik z danymi:

Kod: Zaznacz cały

ala
ola 
zdzisias
i chcialbym je wyswietlic co druga linijke:

Kod: Zaznacz cały

ala

ola

zdzisia

Udalo mi sie znalezc taka komende

Kod: Zaznacz cały

awk '{if(!(NR % 5)) print $0}' #tu plik do wyświetelnia 
ale wyswietla ona tylko piaty wiersz.

Czy moglibyscie mi podsunac pomysl, jak to zrobic?
Ostatnio zmieniony 27 wrz 2012, o 10:04 przez Afish, łącznie zmieniany 1 raz.
Powód: Stosuj tagi.
Awatar użytkownika
Althorion
Użytkownik
Użytkownik
Posty: 4541
Rejestracja: 5 kwie 2009, o 18:54
Płeć: Mężczyzna
Lokalizacja: Wrocław
Podziękował: 9 razy
Pomógł: 662 razy

[bash] wyswietlanie lwartosci co okreslony wiersz

Post autor: Althorion »

Zamień w powyższym kodzie piątkę na dwójkę. Jak chcesz te drugie wyświetlać, to usuwasz wykrzyknik i pasujące nawiasy.
Mat.Monia
Użytkownik
Użytkownik
Posty: 105
Rejestracja: 2 paź 2008, o 19:56
Płeć: Kobieta
Lokalizacja: Bydgoszcz
Podziękował: 7 razy
Pomógł: 2 razy

[bash] wyswietlanie lwartosci co okreslony wiersz

Post autor: Mat.Monia »

Nie oto mi chodzilo. Jak zamienie na 2 wyswietli mi tylko wyrazenie z drugiej linijki. A ja chcialabym, aby wyswietlalo mi wszyskie wyrazy co druga linie.
Afish
Moderator
Moderator
Posty: 2828
Rejestracja: 15 cze 2008, o 15:45
Płeć: Mężczyzna
Lokalizacja: Seattle, WA
Podziękował: 3 razy
Pomógł: 356 razy

[bash] wyswietlanie lwartosci co okreslony wiersz

Post autor: Afish »

Kod: Zaznacz cały

cat plik | awk '{print; print n}'
Awatar użytkownika
Althorion
Użytkownik
Użytkownik
Posty: 4541
Rejestracja: 5 kwie 2009, o 18:54
Płeć: Mężczyzna
Lokalizacja: Wrocław
Podziękował: 9 razy
Pomógł: 662 razy

[Bash] Wyswietlanie lwartości co określony wiersz

Post autor: Althorion »

Czyli że Ci awk 'NR % 2 == 1' /ścieżka/do/pliku nie działa? Zaskakujące, u mnie wszystko jest OK... No ale spróbuj jeszcze takiego ciućka: sed -n 1~2p /ścieżka/do/pliku.
Mat.Monia
Użytkownik
Użytkownik
Posty: 105
Rejestracja: 2 paź 2008, o 19:56
Płeć: Kobieta
Lokalizacja: Bydgoszcz
Podziękował: 7 razy
Pomógł: 2 razy

[Bash] Wyswietlanie lwartości co określony wiersz

Post autor: Mat.Monia »

Jasne, ze dziala, ale wyswietla mi okreslone linie. Jednakze chcialabym zrobic odstepy pomiedzy kolejnymi wierszami (tekst ma byc wyswietlany np. co 2 linijke). Mozna oczywiscie zrobic kilka pustych liniii, ale przy 10, kod juz ladnie nie wyglada, daltego tez szukam innego sposobu.
Awatar użytkownika
Althorion
Użytkownik
Użytkownik
Posty: 4541
Rejestracja: 5 kwie 2009, o 18:54
Płeć: Mężczyzna
Lokalizacja: Wrocław
Podziękował: 9 razy
Pomógł: 662 razy

[Bash] Wyswietlanie lwartości co określony wiersz

Post autor: Althorion »

Na raty, po tym wyżej: sed '0~1 a\ ' /ścieżka/do/pliku, można złączyć pipe'em itp. Na raz też się da, ale nie znam zbyt dobrze narzędzi, by to zrobić (i zabieram się za naukę jakoś trzeci rok już).

EDYCJA:
awk 'if (NR % 2 == 1) {print $0;} else {print "";}' /ścieżka/do/pliku
EDYCJA 2.:
Ach, dobrze mi idzie czytanie ze zrozumieniem. Ty chcesz wstawiać wolną linię co drugi wiersz, a nie wyświetlać co drugą linię (jak na początku zrozumiałem) lub zastępować co drugą (jak zrozumiałem teraz)...
To jest znacznie łatwiejsza rzecz: sed '0~1 a\ ' -i /ścieżka/do/pliku. Zamieni w miejscu. Usunięcie -i spowoduje, że wynik będzie przekierowany na standardowe wyjście.
ODPOWIEDZ