GNU/Linux >> Linux Esercitazione >  >> Linux

Stampa righe se la colonna data inizia con una lettera maiuscola?

Ho un file come questo:

ID  A56
DS  /A56
DS  AGE 56

E vorrei stampare l'intera riga solo se la seconda colonna inizia con una lettera maiuscola.

Uscita prevista:

ID  A56
DS  AGE 56

Quello che ho provato finora:
awk '$2 ~ /[A-Z]/ {print $0}' file
Stampa tutto:le lettere maiuscole si trovano all'interno della seconda colonna.

awk '$2 /[A-Z]/' file
Ottiene un errore di sintassi.

Risposta accettata:

Potresti usare awk come suggerito da @cuonglm, o

  1. GNU grep

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

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

    sed -rn '/^[^s]+s+[A-Z]/p' file 
    
  4. shell (presuppone una versione recente di ksh93, zsh o bash)

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

Linux
  1. Stampa linee tra (e inclusi) due motivi?

  2. Lettura di righe da un file con Bash:per vs. Mentre?

  3. Come creare un file con una determinata dimensione in Linux?

  4. Stampa un file, saltando le prime X righe, in Bash

  5. Linux trova i nomi dei file con una data stringa in modo ricorsivo

Come stampare righe duplicate in un file di testo in Linux

Comando wc Linux

Avviso con nftw

Come eseguire il tail -f dell'ultimo file di registro con un dato modello

Impossibile rinominare un file il cui nome inizia con un trattino

Modificare l'ordine delle righe in un file