Ich habe gelernt, dass in awk, $ 2 ist die zweite Spalte. Wie spezifiziert man die i-te Zeile und das Element in der i-ten Zeile und der j-ten Spalte?Wählen Sie Zeile und Element in awk
Antwort
die zweite Zeile drucken:
awk 'FNR == 2 {print}'
das zweite Feld drucken:
awk '{print $2}'
das dritte Feld der fünften Zeile drucken:
awk 'FNR == 5 {print $3}'
bearbeiten : Hier ist ein Beispiel mit einer Kopfzeile und (redundanter) Feldbeschreibung s:
awk 'BEGIN {print "Name\t\tAge"} FNR == 5 {print "Name: "$3"\tAge: "$2}'
Es gibt übrigens bessere Möglichkeiten Spalten auszurichten als "\ t \ t".
Um auf Dennis Antwort zu erweitern, verwenden awk
‚s -v
Option, um die i
und j
Werte weitergeben müssen:
# print the j'th field of the i'th line
awk -v i=5 -v j=3 'FNR == i {print $j}'
Können wir ein Beispiel haben, wenn die Option -v hilfreich wäre? –
Hier ist eine: http://StackOverflow.com/q/9418617/7552 –
@Dessert die 'j' ist mit dem Wert' 3' gefüllt, so wenn es 'print $ j' tut es' print $ 3' was druckt die dritte Spalte, so ist es richtig wie es aussieht. –
Um die Spalten mit einer bestimmten Zeichenfolge zu drucken, verwenden Sie die // Muster suchen. wenn Sie für die zweite Spalt zum Beispiel suchen, enthält abc:
awk '$2 ~ /abc/'
... und wenn Sie nur eine bestimmte Spalte drucken:
awk '$2 ~ /abc/ { print $3 }'
... und für eine bestimmte Zeile Nummer:
awk '$2 ~ /abc/ && FNR == 5 { print $3 }'
Danke für die Verwendung von "~" –
Da Awk und Perl eng verwandt sind ...
Perl Äquivalenten @ Dennis awk Lösungen:
die zweite Zeile drucken:
perl -ne 'print if $. == 2' file
das zweite Feld drucken:
perl -lane 'print $F[1]' file
das dritte Feld drucken der fünften Zeile:
perl -lane 'print $F[2] if $. == 5' file
Perl Äquivalent @ Glenn-Lösung:
Drucken der j-ten Feld des i-ten Zeile
perl -lanse 'print $F[$j-1] if $. == $i' -- -i=5 -j=3 file
Perl Äquivalenten @ Hai-Lösungen:
Wenn Sie nach zweiten Spalten suchen, die abc enthält:
perl -lane 'print if $F[1] =~ /abc/' foo
... und wenn Sie nur eine bestimmte Spalte drucken:
perl -lane 'print $F[2] if $F[1] =~ /abc/' foo
... und für eine bestimmte Zeilennummer:
perl -lane 'print $F[2] if $F[1] =~ /abc/ && $. == 5' foo
-l
entfernt newlines, und fügt sie wieder in beim Drucken
-a
autosplits der Eingangsleitung in Array @F
, als Begrenzer
-n
Schleife über jede Zeile der Eingabedatei
-e
Ausführen den Code in Anführungszeichen Leerzeichen
$F[1]
ist das zweite Element des Arrays, da Perl beginnt bei 0
$.
die Zeilennummer ist
ich diesen Arbeitsbefehl gefunden
root @ Gateway:/home/sshuser # aws EC2 beschreiben-Instanzen --instance-ids i-2db0459d | grep 'STATE \ | TAG' | awk
STATE 'FNR == 1 {print $ 1}'
- 1. Bootstrap-Wählen Sie ein Element und wählen Sie es
- 2. awk wählen Sie Eingabedateien aus der Liste
- 3. AWK wählen höhere Werte
- 4. Wählen Sie eine Zeile
- 5. Wählen Sie ein Element und seine Geschwister
- 6. sqlalchemy, wählen Sie alle Zeile
- 7. Vergleichen aufeinanderfolgende Zeilen und mehrere Spalten in awk und zufällige wählen Sie eine der doppelten Zeilen
- 8. Wählen Sie Zeile als Spalte
- 9. Wählen Sie Tableview Zeile programmatisch
- 10. Wählen Sie die Zeile in SQL GUID
- 11. Wählen Sie die letzte Zeile in MySQL
- 12. Wählen Sie bestimmte Zeile in Gridview
- 13. Wählen Sie jede nte Zeile in SQLite3
- 14. Wählen Sie Zeile in einem Popup für Bearbeiten und Aktualisieren
- 15. So wählen Sie ein Element in jComboBox
- 16. Wählen Sie eine bestimmte Zeile in SFrame
- 17. Wählen Sie die aktuelle Zeile in intellij
- 18. Konvertieren Zeichenfolge in jQuery-Objekt und wählen Sie inneres Element
- 19. Wählen Sie Element nach Name in Jquery
- 20. Wählen Sie ein beliebiges Element in CardView
- 21. Ausgewähltes Element in wählen
- 22. Wählen und wählen Sie viele Unterschiede
- 23. awk eine Zeile in einer Textdatei ersetzen und speichern
- 24. Zeile in Spalte awk oder shell umwandeln
- 25. Entfernen Sie die ersten Spalten und lassen Sie die verbleibende Zeile in awk unverändert
- 26. Wählen Sie eine Zeile und Daten (Android Studio SQLlite)
- 27. Randomly wählen Zeile in Oracle
- 28. Wählen Sie Zeile mit Concat, Gruppe und Limit mit RAND()
- 29. wählen Sie Text und ersetzen Sie in für Schleife
- 30. Wählen Sie vorletzte Zeile der Datenbank
Danke! Ist es möglich, die Spalten mit einer bestimmten Zeichenfolge zu drucken? – Tim