Dowiedziałem się, że w awk, 2 $ to druga kolumna. Jak określić linię-i element w wierszu i i j-tej kolumnie?wybierz wiersz i element w awk
Odpowiedz
Aby wydrukować drugą linię:
awk 'FNR == 2 {print}'
aby wydrukować drugą murawę:
awk '{print $2}'
aby wydrukować trzecie pole piątego line:
awk 'FNR == 5 {print $3}'
Edytuj : Oto przykład z linią nagłówka i (redundantnym) opisem pola s:
awk 'BEGIN {print "Name\t\tAge"} FNR == 5 {print "Name: "$3"\tAge: "$2}'
Istnieją lepsze sposoby wyrównywania kolumn niż "\ t \ t" przy okazji.
Aby rozwinąć na odpowiedź Dennisa, użyj awk
„s -v
opcję, aby przekazać wartości i
i j
:
# print the j'th field of the i'th line
awk -v i=5 -v j=3 'FNR == i {print $j}'
Czy mamy przykład, kiedy użycie opcji -v byłoby pomocne? –
Oto jedno: http://stackoverflow.com/q/9418617/7552 –
@dekład 'j' jest wypełniony wartością' 3', więc gdy wykona 'print $ j', robi' print $ 3' które drukuje trzecią kolumnę, więc jest poprawna w obecnej formie. –
Aby wydrukować kolumny z określonym ciągiem, użyć // wyszukiwania wzorca. Na przykład, jeśli szukasz używanych kolumn, które zawiera abc:
awk '$2 ~ /abc/'
... a jeśli chcesz wydrukować tylko konkretny kolumna:
awk '$2 ~ /abc/ { print $3 }'
... i dla określonej linii numer:
awk '$2 ~ /abc/ && FNR == 5 { print $3 }'
Dzięki za pokazanie użycia "~" –
Ponieważ awk i perl są blisko spokrewnione ...
Perl równoważniki @ rozwiązań awk Dennisa:
aby wydrukować drugą linię:
perl -ne 'print if $. == 2' file
aby wydrukować drugą murawę:
perl -lane 'print $F[1]' file
Aby wydrukować trzeciego pola piątej linii:
perl -lane 'print $F[2] if $. == 5' file
Perl równoważnik @ roztworu Glenn to:
druku pole j'th z i'th linii
perl -lanse 'print $F[$j-1] if $. == $i' -- -i=5 -j=3 file
Perl równoważników @ rozwiązań Hai:
Jeśli szukasz drugiej kolumny zawierającej abc:perl -lane 'print if $F[1] =~ /abc/' foo
... a jeśli chcesz wydrukować tylko konkretny kolumna:
perl -lane 'print $F[2] if $F[1] =~ /abc/' foo
... i dla danej linii numer:
perl -lane 'print $F[2] if $F[1] =~ /abc/ && $. == 5' foo
-l
usuwa znaki nowej linii, i dodaje je z powrotem w przypadku drukowania
-a
autosplits linię wejściową do tablicy @F
, używając spacji jako separatora
-n
pętlę nad każdym wierszu pliku wejściowego
-e
wykonanie kodu w cudzysłowach
$F[1]
jest drugi element tablicy, ponieważ Perl zaczyna się 0
$.
jest numer linii
znalazłem tego polecenia roboczą
root @ bramy:/home/sshuser # AWS-EC2 opisują przypadki --instance-ID i-2db0459d | grep 'STAN \ | TAG' | awk 'FNR == 1 {print $ 1}'
STATE
- 1. Wybierz górny i dolny wiersz
- 2. Jak pominąć ostatni wiersz w/awk?
- 3. bootstrap-wybierz element dodany i wybierz go
- 4. wydrukuj wszystkie, ale wybierz pola w awk
- 5. Wybierz element i jego rodzeństwo
- 6. MySQL: Wybierz wiersz gdzie kolumna zawiera element z listy
- 7. linq wybierz losowy wiersz
- 8. Wybierz wiersz tabeli w jQuery
- 9. sqlalchemy, wybierz cały wiersz
- 10. awk wybierz pliki wejściowe z listy
- 11. Wybierz wiersz po odświeżeniu DBGrid
- 12. jquery wybierz element xpath
- 13. Wybierz pierwszy wiersz każdej grupy w sql
- 14. UPDATE i WYBIERZ wiersz w tej samej transakcji
- 15. C# ToDictionary lambda wybierz indeks i element?
- 16. Wybierz losowy wiersz (y) w SQLite
- 17. jQuery - wybierz drugi wiersz w tabeli?
- 18. Wybierz konkretny element przed inny element
- 19. Porównaj kolejne rzędy i wiele kolumn w awk i losowo wybierz jedną z duplikatów linii
- 20. Wybierz pierwszy i ostatni wiersz z danych zgrupowanych
- 21. JQuery autouzupełnianie - Wybierz pierwszy element
- 22. Wybierz pierwszy element kilku zestawów.
- 23. SQL wybierz różne wiersze i ignoruj wiersz, jeśli puste
- 24. Wybierz losowy wiersz dla różnych wartości pola?
- 25. kątowa ngGrid wybierz wiersz na stronie obciążenia
- 26. Matlab - Wybierz określony wiersz na podstawie warunku
- 27. Losowo wybierz element z listy
- 28. Wybierz element na podstawie tekstu
- 29. wybierz poprzedni element w gałązce dla pętli
- 30. TSQL Wybierz Min & Max wiersz podczas grupowania
Dzięki! Czy można wydrukować kolumny z określonym ciągiem znaków? – Tim