여러 줄 패턴 공간이 있는 sed의 ^ 및 $ 정규식 앵커의 POSIX 동작

여러 줄 패턴 공간이 있는 sed의 ^ 및 $ 정규식 앵커의 POSIX 동작

sed ^$예를 들어 다음을 사용할 때 패턴 공간에 개행 문자가 포함되어 있는 경우질소주문하다?

여전히 패턴 공간의 시작과 끝과 일치해야 합니까, 아니면 여러 줄이 포함된 줄의 시작과 끝과 일치해야 합니까?

GNU sed^합은 $여전히 ​​전체 패턴 공간의 시작과 끝과만 일치합니다.

답변1

^그리고$갈아 바수다항상 시작과 끝이 일치합니다.철사, 설명한대로여기.

어떤 sed용도로든갈아 바수다똑같이 할 것입니다. 명령을 사용 N하는 경우 sed여러 줄이 패턴 공간에서 하나의 긴 줄로 처리되며 각 줄은진짜\n포함된 줄바꿈(리터럴 및 )으로 \구분된 줄입니다 n.

확인하다:

printf '1\n2\n' | sed '1N;/2$/d'

아무것도 출력되지 않습니다. 그리고:

printf '1\n2\n' | sed '1N;/1$/d'

당신을 위한:

1
2

또는 l더 자세한 정보를 얻으려면 ook 명령을 사용하십시오.

$ printf '1\n2\n' | sed 1N\;l
1\n2$
1
2

$ printf '1\n2\n' | sed 1N\;l | od -t a
0000000   1   \   n   2   $  nl   1  nl   2  nl
0000012

관련 정보