각 행의 X번째 매개변수를 가져옵니다.

각 행의 X번째 매개변수를 가져옵니다.

출력 라인에서 두 번째 매개변수를 가져오고 싶습니다. 예를 들어:

ps aux

세 번째 열에 cpu-usage %CPU가 포함된 출력을 제공합니다.

해당 열만 있도록 출력을 필터링하려면 어떻게 해야 합니까?

나는 노력했다

ps aux | cut -f 3

하지만 이건 작동하지 않아

또한보십시오:행의 X번째 요소를 필터링하시겠습니까?

답변1

이를 달성하는 방법에는 여러 가지가 있습니다. 다음은 사용 예입니다 awk.

ps aux | awk '{print $3}'

$3이 명령에 대한 인수는 print기본적으로 일련의 공백으로 구분된 각 줄의 세 번째 필드를 인쇄합니다.

답변2

ps서식 옵션 사용

ps사용자 정의 출력 형식을 지정할 수 있습니다.

ps ax o pcpu

위 명령은 CPU 사용량 데이터 목록을 반환합니다.

cut작동하지 않습니까?

cut기본 구분 기호는 탭입니다. ps출력에 공백을 사용하므로 를 사용하여 cut -d' ' -f3세 번째 필드를 선택해야 합니다(표시됨 cut).

cut 사용의 문제점은 구분 기호에 인접한 모든 항목을 필드로 처리한다는 것입니다. ps필드 사이에 여러 개의 인접한 공백이 인쇄되므로 ,

$ ps aux
...
para␣␣␣␣␣␣␣462␣␣0.0␣␣0.0␣␣13492␣␣1792␣tty1␣␣␣␣␣Ss+␣␣05:52␣␣␣0:00
root␣␣␣␣␣␣␣484␣␣1.8␣␣0.5␣137020␣45112␣?␣␣␣␣␣␣␣␣Ss␣␣␣05:52␣␣␣0:20
para␣␣␣␣␣␣␣490␣␣0.0␣␣0.0␣␣28072␣␣1708␣tty1␣␣␣␣␣S␣␣␣␣05:52␣␣␣0:00
...
$ ps aux | cut -d' ' -f3
...
...

cut세 번째 필드를 요청하면 공백 열이 인쇄됩니다. 설상가상으로, 각 필드 사이에 출력되는 공백의 수가 항상 줄 사이에 균등한 것은 아니므로 그냥 사용할 ps수는 없습니다.cut -d' ' -f12

...
4.6
0.0
0.0
0.0
0.1
...

관련 정보