프로필 변수에서 100이 아닌 변수를 제거하는 방법

프로필 변수에서 100이 아닌 변수를 제거하는 방법

구성 파일에서 변수를 제거하는 방법hadoop.tasklog.totalLogFileSize100과 같지 않음

more file.conf

hadoop.tasklog.totalLogFileSize=107
hadoop.tasklog.totalLogFileSize=10
hadoop.tasklog.totalLogFileSize=100
hadoop.tasklog.totalLogFileSize=189
hadoop.tasklog.totalLogFileSize=104
hadoop.tasklog.purgeLogSplits=true
hadoop.tasklog.logsRetainHours=12
.
.

예상 출력

more file.conf

hadoop.tasklog.totalLogFileSize=100
hadoop.tasklog.purgeLogSplits=true
hadoop.tasklog.logsRetainHours=12
.
.

답변1

$ awk -F= '/hadoop\.tasklog\.totalLogFileSize/ && $2 != 100 { next } 1' file
hadoop.tasklog.totalLogFileSize=100
hadoop.tasklog.purgeLogSplits=true
hadoop.tasklog.logsRetainHours=12

이는 파일을 =-로 구분된 필드로 처리합니다. 행이 지정된 패턴과 일치하고 다음 숫자 =(즉, 두 번째 필드)가 100이 아닌 경우 해당 행을 건너뛰고 출력이 생성되지 않습니다. 다른 모든 줄은 1프로그램 끝의 후행 줄에 의해 출력됩니다( 로 대체 가능 { print }).

사용 sed:

$ sed '/hadoop\.tasklog\.totalLogFileSize/{ /=100$/!d; }' file
hadoop.tasklog.totalLogFileSize=100
hadoop.tasklog.purgeLogSplits=true
hadoop.tasklog.logsRetainHours=12

이것은 모든 라인을 출력하지만 라인이 주어진 패턴과 일치하면 실행됩니다.아니요일치하는 항목이 =100줄 끝에 있으면 입력에서 제거됩니다.

관련 정보