次のファイルがあります。
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
。または
GNU grep
grep -P '^[^\s]+\s+[A-Z]' file
真珠
perl -lane 'print if $F[1]=~/^[A-Z]/' file
GNU sed
sed -rn '/^[^\s]+\s+[A-Z]/p' file
シェル(最新バージョンのksh93、zsh、またはbash仮定)
while read -r a b; do [[ $b =~ ^[A-Z] ]] && printf "%s %s\n" "$a" "$b"; done < file