필터에는 파일에 대문자가 필요합니다(모두 대문자가 아님).

필터에는 파일에 대문자가 필요합니다(모두 대문자가 아님).

나는 단지 이 파일의 출력을 원한다.

AVDDPLL1V8
AGNDPLL1V8
DVDDPLL1V1
DGNDPLL1V1 

이것은 내 입력입니다.

6.1.2 Power and Ground Pins
             The following table describes the power and ground pins for the PLL.


             Table 5: Power and Ground Pins
                  Pin Name                                                Description
                                    Analog power pin. This pin provides the power supply for the sensitive analog
                AVDDPLL1V8
                                    blocks of the PLL.
                                    Analog ground pin. This pin provides the ground for the sensitive analog blocks
                AGNDPLL1V8
                                    of the PLL.
                                    Digital power pin. This pin provides power supply for the digital circuits in the
                DVDDPLL1V1
                                    PLL.
                DGNDPLL1V1          Digital ground pin. This pin provides ground for the digital circuits in the PLL.

답변1

한 가지 방법은 다음과 같습니다.

$ awk '$1 ~ /^[[:upper:]]+[0-9]+/ {print $1}' file
AVDDPLL1V8
AGNDPLL1V8
DVDDPLL1V1
DGNDPLL1V1

설명하다

^각 줄의 첫 번째 필드만 확인하고 하나 이상의 대문자로 시작하고 [[:upper:]]+그 뒤에 하나 이상의 숫자가 오면 [0-9]+인쇄합니다.

귀하의 입력에 따르면 대문자 뒤에 하나 이상의 숫자가 있다고 가정합니다.

답변2

모든 영숫자 문자를 인쇄하려면 다음 grep 명령을 사용해 보십시오.

$ grep -oP '[A-Z0-9]*[A-Z][0-9][A-Z0-9]*' file
AVDDPLL1V8
AGNDPLL1V8
DVDDPLL1V1
DGNDPLL1V1

답변3

기존 답변의 문제가 숫자 없이 대문자로만 구성된 단어를 찾을 수 없다는 것이라면 Gnouc의 답변을 다음과 같이 적용할 수 있습니다.

awk '$1 ~ /^[[:upper:]0-9]+$/ {print $1}'

또는

awk '$1 ~ /^[[:upper:][:digit:]]+$/ {print $1}'

이는 그의 솔루션과 다음과 같은 점에서 다릅니다.

  • 대문자 () 와 함께 괄호 안에 숫자 ( [0-9]또는 )를 넣으면 일치하는 각 문자가 대문자 또는 숫자여야 하며 Gnouc의 현재 답변에는 그 중 적어도 하나가 필요합니다.[:digit:][:upper:]
  • 을 추가함으로써 $우리는모두첫 번째 단어는 대문자 및/또는 숫자로 구성됩니다. 그것이 없으면 , The, Table, PinAnalog는 일치할 것입니다.시작대문자를 사용하세요.

612한 줄의 첫 번째 "단어"(예: 공백이 아닌 문자의 첫 번째 시퀀스)인 경우 순수 숫자(예: )와 일치합니다. 이를 방지하려면 다음을 수행하십시오.

awk '$1 ~ /^[[:upper:]][[:upper:]0-9]*$/ {print $1}'

또는

awk '$1 ~ /^[[:upper:]][[:upper:][:digit:]]*$/ {print $1}'

"말"이 필요하다시작편지로.

답변4

sed -n 's/^ *\([[:upper:]0-9]\{10,\}\).*/\1/p'

해당 단어가 대문자 및/또는 숫자로만 구성된 연속 문자 10개 이상으로 구성된 경우 줄의 첫 번째 단어가 인쇄됩니다. 다른 것은 인쇄되지 않습니다.

샘플 데이터를 실행하면 출력은 다음과 같습니다.

AVDDPLL1V8
AGNDPLL1V8
DVDDPLL1V1
DGNDPLL1V1

관련 정보