我有一个这样的文件:
ID A56
DS /A56
DS AGE 56
仅当第二列以大写字母开头时,我才想打印整行。
预期输出:
ID A56
DS AGE 56
到目前为止我已经尝试过:
awk '$2 ~ /[A-Z]/ {print $0}' file
打印所有内容:在第二列中找到大写字母。
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
shell(假设是最新版本的 ksh93、zsh 或 bash)
while read -r a b; do [[ $b =~ ^[A-Z] ]] && printf "%s %s\n" "$a" "$b"; done < file