0
awk를 사용하여 파일의 여러 문자열을 대체하려고합니다. 교체하고 삭제해야하는 반복되는 일련의 줄이 있습니다. 예를 들어, 파일awk 여러 줄 바꾸기, N 번째 줄 삭제
INSTANCE "INVX1":"physical"
"A" : "reset"
"Y" : "pp_resetbar"
INSTANCE "INVX1":"physical"
"A" : "reset"
"Y" : "pp_resetbar"
INSTANCE "INVX1":"physical"
"A" : "reset"
"Y" : "pp_resetbar"
을 가지고 있는데 3, 4를 변경/처음 두를 교체하고 삭제할 ..., N 번째를
INSTANCE "INVX1":"physical"
"A" : "reset"
"Y" : "pp_resetbar_b"
INSTANCE "BUFX2":"physical"
"A" : "pp_resetbar_b"
"Y" : "pp_resetbar"
것은 내가 알지도 못하는 솔직히 말해서 어디서 시작하나요. N 번째 발생을 대체하기위한 스크립트를 만들었지 만이를 위해 작동하지 않습니다. 아래를 참조하십시오. 어떤 도움이라도 인정받을 것입니다.
awk -v search=$2 -v replace=$3 -v cnt=$4 '$0 ~ search{c++;if(c==cnt){sub(search,replace);}}1' "$file" > temp && mv temp "$file"
을 그래서인가? 즉, INSTANCE "INVX2": "physical"이 있지만 나머지는 같으면 인쇄 할 수 있습니까? 또한 반복되는 모든 인스턴스가 함께 그룹화되었거나 나중에 보관해야하는 다른 레코드 뒤에 반복해서 표시 될 수 있습니까? 이 데이터의 출처와 사용 계획에 대한 자세한 정보가 필요하다고 생각합니다. 이것은 당신이 요구 한 수정의 범위를 다루기위한 예로 충분하지 않습니다. – ghoti
'INSTANCE "INVX1": "physical"블록은 일반적으로 그룹핑되지만 모든 파일에 해당하는 것은 아닙니다. 내가 갖고 싶은 스크립트는 내가 게시 한 스크립트와 유사하지만 여러 줄 문자열에 대해 어떤 변경이 발생하는지 알 수있는 스크립트입니다. – geo
나는 아직도 우리가 계속할 충분한 것을 생각하지 않는다. 즉, 패턴의 미래 인스턴스에 대해 상태를 설정하는 awk에서 일련의'if '조건을 사용하여 여러 줄 패턴 감지를 수행 할 수 있지만 매우 국소화 된 솔루션 인 것처럼 보입니다. 데이터를보다 쉽게 분류하고 분석 한 다음,이 데이터를 사용하는 응용 프로그램에 필요한 형식으로 다시 변환하면 어떻게됩니까? – ghoti