grep이 이스케이프된 여러 줄을 단일 줄로 처리하도록 할 수 있나요?

grep이 이스케이프된 여러 줄을 단일 줄로 처리하도록 할 수 있나요?

grep백슬래시로 이스케이프된 여러 줄을 긴 단일 줄로 처리하는 것과 같은 도구를 만드는 방법은 무엇입니까 ?

다음과 같은 파일이 있다고 가정해 보겠습니다.

testvar=test1 \
        test2 \
        test3

othervar=oth1 \
         oth2

지금 greptestvar를 실행하면 반환되지만 testvar=test1 \반환할 수 있는 방법이 있습니까 testvar=test1 test2 test3?

이 이스케이프된 여러 줄을 한 줄로 처리하는 방법은 무엇입니까?

노트: 를 사용하여 이 작업을 수행할 수 없는 경우 또는 동일한 결과를 얻는 것과 grep같은 다른 도구를 사용하여 이 작업을 수행하는 방법에 대한 팁도 환영합니다.sedawk

답변1

사용 사례 에 따라 awk필드 구분 기호와 레코드 구분 기호를 설정하세요 .

awk 'BEGIN { FS="\n"; RS ="" } /testvar/' yourfile
testvar=test1 \
        test2 \
        test3

수동 입력 참조여러 줄의 레코드.

답변2

예를 들어 다음과 같이 이러한 줄을 연결하여 전처리할 수 있습니다.

awk 'match($0,/\\+$/) && RLENGTH % 2 {
       sub(/\\$/,""); printf "%s", $0; next
     }
     {print}' | grep ...

관련 정보