첫 번째 행의 첫 번째 필드를 인쇄하는 cut 또는 awk 명령


78

출력 첫 번째 행의 첫 번째 필드를 인쇄하려고합니다. 여기에 경우가 있습니다. SUSE이 출력 에서만 인쇄하면 됩니다.

# cat /etc/*release

SUSE Linux Enterprise Server 11 (x86_64)
VERSION = 11
PATCHLEVEL = 2

시도 cat /etc/*release | awk {'print $1}'했지만 모든 행의 첫 번째 문자열을 인쇄합니다.

SUSE
VERSION
PATCHLEVEL

답변:


192

NR선택한 행에서 출력을 캡처할지 여부를 지정 하십시오.

awk 'NR==1{print $1}' /etc/*release

동일한 것을 달성 하는 대안 ( 추악한 ) 방법은 다음과 같습니다.

awk '{print $1; exit}'

출력에서 특정 라인 (예 : 라인 42)에서 첫 번째 문자열 을 가져 오는 효율적인 방법 은 다음과 같습니다.

awk 'NR==42{print $1; exit}'

@jaypal 나는 또한 a를 추가하는 것을 생각 tac file | awk 'END{print $1}'했지만 그것이 너무 많을 수도 있음을 깨달았습니다.
devnull 2014 년

즉 당신 만들 것 비록 추한 솔루션 모습 현저하게 제안에 대한 예뻐 무시 무시한 솔루션을!
싱 jaypal

3
그렇지 않습니다 ugly. 큰 파일에서 발견시 종료하여 많은 시간을 절약하고 처리를 중지하므로 훨씬 좋습니다.
Jotne

@Jotne 나는 그것이 추한 단순히 때문이라고 NR==1했다 암시 . 아마도 조금 더 명확하게 대답하는 또 다른 예를 추가했습니다.
devnull

@devnull 나는 알고 있지만 OPs 요구 사항이 명확 print the first string of the first row of an output하므로 여기에서 exit괜찮을 것입니다.
Jotne

20

기본 제공 변수를 사용하여 행 번호 를 지정하십시오 NR.

awk 'NR==1{print $1}' /etc/*release


2

head대신 사용할 수 있습니다 cat.

head -n1 /etc/*release | awk '{print $1}'

2
sed -n 1p /etc/*release |cut -d " " -f1

탭으로 구분 된 경우 :

sed -n 1p /etc/*release |cut -f1

1

시험

sed 'NUMq;d'  /etc/*release | awk {'print $1}'

여기서 NUM은 줄 번호입니다.

ex. sed '1q;d'  /etc/*release | awk {'print $1}'

이것은 OP가 말한 것처럼 첫 번째 필드가 아닌 전체 첫 번째 줄을 인쇄합니다.
싱 jaypal

답변 됨 saras che pan thodu laambu che. 할리는 sed카리 sakiye 팬 티 -sed -r '1s/([^ ]+) .*/\1/;q' /etc/*release :)
싱 jaypal


0

컨테이너를 실행중인 프로세스를 종료 할 수 있습니다.

이 명령을 사용하면 docker 컨테이너와 관련된 프로세스를 나열 할 수 있습니다.

ps -aux | grep $(docker ps -a | grep container-name | awk '{print $1}')

이제 kill 또는 kill -9 로 죽일 프로세스 ID가 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.