주어진 열이 대문자로 시작하면 행을 인쇄합니다.

주어진 열이 대문자로 시작하면 행을 인쇄합니다.

다음과 같은 파일이 있습니다.

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. 또는

  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 
    

관련 정보