与えられた列が大文字で始まる場合、行を印刷します。

与えられた列が大文字で始まる場合、行を印刷します。

次のファイルがあります。

ID  A56
DS  /A56
DS  AGE 56

2番目の列が大文字で始まる場合にのみ、行全体を印刷したいと思います。

予想出力:

ID  A56
DS  AGE 56

これまでに試したこと:
awk '$2 ~ /[A-Z]/ {print $0}' file
すべてを印刷してください:2番目の列で大文字を見つけます。

awk '$2 /[A-Z]/' file
構文エラーが受信されました。

答え1

^文字列の先頭を表すには正規表現を使用する必要があります。

$ awk '$2 ~ /^[[:upper:]]/' file
ID  A56
DS  AGE 56

答え2

@cuonglm提案どおりに使用できますawk。または

  1. GNU grep

    grep -P '^[^\s]+\s+[A-Z]' file 
    
  2. 真珠

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

    sed -rn '/^[^\s]+\s+[A-Z]/p' file 
    
  4. シェル(最新バージョンのksh93、zsh、またはbash仮定)

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

関連情報