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

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

grep백슬래시로 이스케이프된 여러 줄을 긴 한 줄로 처리하는 것과 같은 도구를 만들려면 어떻게 해야 합니까 ?

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

testvar=test1 \
        test2 \
        test3

othervar=oth1 \
         oth2

지금 greptestvar에 대해 반환하면 반환되지만 testvar=test1 \반환되도록 할 수 있는 방법이 있습니까 testvar=test1 test2 test3?

이스케이프된 여러 줄을 단일 줄로 처리하는 방법은 어느 정도입니까?

메모: 를 사용하여 이 작업을 수행할 수 없는 경우 grep와 같은 다른 도구를 사용하여 이 작업을 수행하는 방법 sed이나 awk동일한 결과를 얻는 방법에 대한 힌트도 환영합니다.

답변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 ...

관련 정보