grep
백슬래시로 이스케이프된 여러 줄을 긴 단일 줄로 처리하는 것과 같은 도구를 만드는 방법은 무엇입니까 ?
다음과 같은 파일이 있다고 가정해 보겠습니다.
testvar=test1 \
test2 \
test3
othervar=oth1 \
oth2
지금 grep
testvar를 실행하면 반환되지만 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 ...