이 SED 명령을 더 쉽게 이식하려면 어떻게 해야 합니까?

이 SED 명령을 더 쉽게 이식하려면 어떻게 해야 합니까?

다음 sed명령을 사용하고 있습니다.

cat version | sed -e 's/[0-9][0-9][0-9][0-9][0-9:M]*-[abp]/Ver\n/'

다음과 같이 정규화됩니다.

4330M-p  ->  Ver<newline>

이는 GNU SED에서는 잘 작동하지만 Mac OS X의 BSD SED에서는 \n이 n다음과 같이 변합니다.

4330M-p  ->  Vern

시간이 지남에 따라 정적 문자열로 변경되는 버전 번호와 그 뒤에 개행 문자가 포함된 일부 출력을 정규화합니다. 이는 sed처리 후 출력을 알려진 골든 파일과 비교하는 테스트의 일부로 사용되며 diff버전 번호 변경으로 인한 실패를 원하지 않으며 추가로 우리 목적에 맞게 개행을 추가해야 합니다.

의 GNU 및 BSD 버전 모두에서 작동하는 방식으로 개행을 추가하는 문자열로 어떻게 바꿀 수 있습니까? 아니면 Mac OS X에 sedGNU를 설치해야 합니까 ?sed

답변1

다음과 같이 스크립트에서 리터럴 개행 문자를 만들 수 있습니다.

cat version | sed -e 's/[0-9][0-9][0-9][0-9][0-9:M]*-[abp]/Ver\
/'

관련 정보