我有一个这样的文件:
ID A56
DS /A56
DS AGE 56
Run Code Online (Sandbox Code Playgroud)
只有当第二列以大写字母开头时,我才想打印整行。
预期输出:
ID A56
DS AGE 56
Run Code Online (Sandbox Code Playgroud)
到目前为止我尝试过的:
awk '$2 ~ /[A-Z]/ {print $0}' file
打印所有内容:在第二列中找到大写字母。
awk '$2 /[A-Z]/' file
获取语法错误。
cuo*_*glm 10
您必须使用正则表达式^
来表示字符串的开头:
$ awk '$2 ~ /^[[:upper:]]/' file
ID A56
DS AGE 56
Run Code Online (Sandbox Code Playgroud)
您可以awk
按照@cuonglm 的建议使用,或者
GNU grep
grep -P '^[^\s]+\s+[A-Z]' file
Run Code Online (Sandbox Code Playgroud)珀尔
perl -lane 'print if $F[1]=~/^[A-Z]/' file
Run Code Online (Sandbox Code Playgroud)GNU sed
sed -rn '/^[^\s]+\s+[A-Z]/p' file
Run Code Online (Sandbox Code Playgroud)shell(假设是最新版本的 ksh93、zsh 或 bash)
while read -r a b; do
[[ $b =~ ^[A-Z] ]] && printf "%s %s\n" "$a" "$b";
done < file
Run Code Online (Sandbox Code Playgroud)