GNU/Linux >> Tutoriels Linux >  >> Linux

Imprimer les lignes si la colonne donnée commence par une lettre majuscule ?

J'ai un fichier comme celui-ci :

ID  A56
DS  /A56
DS  AGE 56

Et je voudrais imprimer toute la ligne uniquement si la deuxième colonne commence par une majuscule.

Sortie attendue :

ID  A56
DS  AGE 56

Ce que j'ai essayé jusqu'à présent :
awk '$2 ~ /[A-Z]/ {print $0}' file
Imprime tout :les majuscules se trouvent dans la deuxième colonne.

awk '$2 /[A-Z]/' file
Obtient une erreur de syntaxe.

Réponse acceptée :

Vous pouvez utiliser awk comme suggéré par @cuonglm, ou

  1. grep GNU

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

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

    sed -rn '/^[^s]+s+[A-Z]/p' file 
    
  4. shell (suppose une version récente de ksh93, zsh ou bash)

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

Linux
  1. Imprimer des lignes entre (et y compris) deux motifs ?

  2. Comment générer un fichier et ignorer les lignes commençant par "?" ?

  3. Compter les lignes dans un fichier ?

  4. Commande wc Linux

  5. Comment créer un fichier avec une taille donnée sous Linux ?

Comment imprimer des lignes dupliquées dans un fichier texte sous Linux

Dupliquer, avec quelques petites modifications, quelques lignes dans un fichier texte ?

Lecture de lignes à partir d'un fichier avec Bash :pour Vs. Tandis que?

Trouver les lignes avec la valeur la plus basse dans leur troisième colonne étant donné les résultats de Grep ?

Imprimer un fichier, en sautant les X premières lignes, dans Bash

Impossible de renommer un fichier dont le nom commence par un trait d'union