프로세스에서 로드한 .so 목록에 대해 일부 처리를 수행해야 합니다. 공백을 구분 기호로 사용하여 절단을 시도했지만 성공하지 못했습니다. 마지막 필드를 얻기 위해 cat /proc/PID/maps의 출력을 컷으로 올바르게 파이프하는 방법은 무엇입니까?
답변1
마지막 필드를 얻는 것은 일반적으로 약간 까다롭습니다. 옵션은 다음과 같습니다
awk '{print $NF}' /proc/PID/maps
( awk
항목이 있는 마지막 필드가 반환됩니다. 0
inode=0 항목의 경우 빈 필드 대신 반환됩니다.)
또는 중간에 있는 첫 번째 필드를 선택하여 행을 두 번 뒤집습니다.
rev /proc/PID/maps | cut -d' ' -f1 | rev
grep
공백을 제외한 문자를 일치시킨 다음 줄 끝 부분과 일치시키는 데 사용됩니다 .
grep -o '[^ ]*$' /proc/PID/maps
답변2
maps
'고정 패딩'을 사용할 수 있습니다 .
cut -c74- /proc/.../maps
(64비트 플랫폼에서).
모든 경우에 마지막 필드를 추출합니다.예를 들어를 사용하면 해당 줄에서 백업 파일을 생략하거나 완전히("[힙]" 등) 사용할 수 있으므로 awk '{ print $NF }'
오해의 소지가 있습니다 .maps
답변3
재봉이 약간 제한되어 있습니다. file: 에 있는 경우 12345 abcde 12438
이를 구문 분석하여 파이프하거나 리디렉션할 수 있는 콘텐츠를 cat file | awk '{print $2}'
얻을 수 있습니다.abcde