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.0g
GB로 표시된 항목(예 : )을 KB로 표시된 해당 숫자 또는 1.0g
로 변환하고 싶습니다 . 이러한 항목을 찾아 동등한 계산 값으로 바꾸는 1000000
방법을 모르겠습니다 .awk
답변1
다음 awk
명령을 실행해야 합니다.
awk 'sub(/g$/,"",$2) {$2=1000000*$2}1' input.txt
이는 후행을 "nothing"으로 대체하여 두 번째 열( )이 소문자로 끝나는지 확인합니다 $2
(따라서 필드를 숫자 값으로만 줄임). 성공한 경우(즉, 수행된 성공적인 대체 횟수인 의 반환 값이 0이 아닌 경우) 필드 값에 1000000을 곱합니다.g
g
sub()
후행 1
명령은 awk
수정 사항을 포함하여 모든 줄을 인쇄합니다.