awk를 사용하여 문자열을 찾아 바꾸고 문자열을 기반으로 계산을 수행합니다.

awk를 사용하여 문자열을 찾아 바꾸고 문자열을 기반으로 계산을 수행합니다.

3개의 열이 있는 테이블 파일이 있습니다.

 5565 35824 58.8 
 5713 67404 94.1 
 5716 64456 94.1 
 5718 60492 94.1
 5724 57588 88.2
 5718 844188 75.0
 5757 903388 75.0 
 5724 871828 68.8
 5565 1.0g 43.8
 5565 1.3g 37.5
 5718 878060 6.2

중간 열은 KB 단위의 메모리입니다( top명령의 RSS 열에 있음).

1.0gGB로 표시된 항목(예 : )을 KB로 표시된 해당 숫자 또는 1.0g로 변환하고 싶습니다 . 이러한 항목을 찾아 동등한 계산 값으로 바꾸는 1000000방법을 모르겠습니다 .awk

답변1

다음 awk명령을 실행해야 합니다.

awk 'sub(/g$/,"",$2) {$2=1000000*$2}1' input.txt

이는 후행을 "nothing"으로 대체하여 두 번째 열( )이 소문자로 끝나는지 확인합니다 $2(따라서 필드를 숫자 값으로만 ​​줄임). 성공한 경우(즉, 수행된 성공적인 대체 횟수인 의 반환 값이 0이 아닌 경우) 필드 값에 1000000을 곱합니다.ggsub()

후행 1명령은 awk수정 사항을 포함하여 모든 줄을 인쇄합니다.

관련 정보