CZEŚĆ,
prawdopodobnie jest to coś bardzo łatwego, ale nie rozumiem teraz. W Linuksie powłoka, biorąc pod uwagę plik tekstowy, jak mogę zrobić coś takiego, nazwa pliku cat, więc widzę tylko pierwszy wiersz, trzeci wiersz, 5, 7, 9 i tak dalej?
jeśli nie z kotem, z innym poleceniem
Dzięki
{print}
to akcja domyślna, więcawk 'NR % 2 == 0' < myfile
wystarczy.2 == 0
się2 == 1
za przeciwieństwo.Lub coś w tym rodzaju
Aby uzyskać wyjaśnienie, wyszukaj stronę podręcznika użytkownika
sed
.źródło
sed
wersja, która wpadła mi w pamięć.sed -n '1d;p;n'
na przykład dla linii parzystychUżyj sed:
źródło
sed
nie jest domyślny.sed
ręczne gnu.org/software/sed/manual/html_node/Addresses.html#Addresses mówi „pierwszy krok ~ To rozszerzenie GNU ...”. Nie wspomina--posix
. Kiedy próbujęgsed --posix -n 1~2p
(GNU sed 4.2.1), rozumiemgsed: -e expression #1, char 2: unknown command: ‘~’
.źródło
Na dwa sposoby możesz to zrobić za pomocą awk
LUB tylko z powłoką
źródło
Proste wyszukiwanie w Google pokazuje ten link: http://bash.cyberciti.biz/academic/write-odd-even-line-file/
Musisz go tylko trochę ulepszyć.
Moje 2 centy.
źródło
Nie przetestowałem tego (wydaje się, że nie działa w systemie Mac OS X), ale GNU sed obsługuje
first~step
wybór adresu, więc na przykład:sed -n 1~2p file
zaczynałby się od pierwszego wiersza i wypisywał co drugi wiersz później.
źródło
sed
w instalacji podstawowej.Nie można przetestować, znaleziono link: cat -n $ 1 | grep "$ ODDRE" | Wytnij -b 8-> nieparzysty plik. $$
źródło
ODDRE
jest ustawione. Ale ta odpowiedź zadziała tylko wtedy, gdy plik ma mniej niż milion wierszy.Możesz użyć tych poleceń, aby uzyskać wynik
awk „NR% 2 == 1”
sed -ne „1 ~ 2p”
źródło
ls -l
tu jest