GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Zeilen drucken, wenn angegebene Spalte mit einem Großbuchstaben beginnt?

Ich habe eine Datei wie diese:

ID  A56
DS  /A56
DS  AGE 56

Und ich möchte nur dann die ganze Zeile drucken, wenn die zweite Spalte mit einem Großbuchstaben beginnt.

Erwartete Ausgabe:

ID  A56
DS  AGE 56

Was ich bisher versucht habe:
awk '$2 ~ /[A-Z]/ {print $0}' file
Druckt alles:Großbuchstaben befinden sich in der zweiten Spalte.

awk '$2 /[A-Z]/' file
Erhält einen Syntaxfehler.

Akzeptierte Antwort:

Sie könnten awk verwenden wie von @cuonglm vorgeschlagen, oder

  1. GNU grep

    grep -P '^[^s]+s+[A-Z]' file 
    
  2. Perl

    perl -lane 'print if $F[1]=~/^[A-Z]/' file
    
  3. GNU-sed

    sed -rn '/^[^s]+s+[A-Z]/p' file 
    
  4. Shell (setzt eine neuere Version von ksh93, zsh oder bash voraus)

    while read -r a b; do 
        [[ $b =~ ^[A-Z] ]] && printf "%s %sn" "$a" "$b"; 
    done < file 
    

Linux
  1. Zeilen zwischen (und einschließlich) zwei Mustern drucken?

  2. Zeilen in einer Datei zählen?

  3. Finden der Zeilen mit dem niedrigsten Wert in ihrer dritten Spalte bei gegebenen Grep-Ergebnissen?

  4. Linux-wc-Befehl

  5. Drucken Sie eine Datei, wobei Sie die ersten X-Zeilen in Bash überspringen

So drucken Sie doppelte Zeilen in einer Textdatei unter Linux

Lesen von Zeilen aus einer Datei mit Bash:Für Vs. Während?

Wie erstelle ich eine Datei mit einer bestimmten Größe in Linux?

Warnung mit nftw

Wie man -f die neueste Protokolldatei mit einem bestimmten Muster tailt

Grep-Zeilen beginnend mit 1, aber nicht 10, 11, 100 usw