2014-09-28 2 views
1

Mac OS에서 sed 명령을 사용합니다. 다음은 텍스트입니다.BSD sed : d 명령 끝의 추가 문자

$ cat pets.txt 
This is my cat 
    my cat's name is betty 
This is your dog 
    your dog's name is frank 
This is your fish 
    your fish's name is george 
This is my goat 
    my goat's name is adam 

나는 실행하면

$ sed '3,6 {/This/d}' pets.txt 

그것은 보여 (BSD가 나오지도) 오류 : 그것이 뭐가 잘못

sed: 1: "3,6 {/This/d}": extra characters at the end of d command 

? gsed(GNU sed)을 사용하면 잘 작동합니다.

답변

4

가장 간단한 해결책은 d (도시 공간 선택적) 후 세미콜론 넣어이다

sed -e '3,6 { /This/d; }' pets.txt 

BSD sed은 GNU sed보다 레이아웃이 더 편합니다. BSD sed의 일부가 아닌 많은 GNU 확장이 있으며, 이것은 하나입니다. 세미콜론은 많은 문제를 해결하지만 문제에 대한 보편적 인 해결책은 아닙니다. 명령을 여러 줄로 확장하거나 여러 개의 -e 옵션 또는 여러 가지 '트릭'에 넣을 수도 있습니다.

1

{}을 하나의 표현식에 포함시킬 수있는 GNU 확장을 사용하고 있습니다.

sed -e 3,6{ -e /This/d -e } pets.txt 

당신은 또한 한 줄에 하나씩 파일에 명령을 넣을 수 있습니다 : 그것은 휴대용하려면, 당신이 위로 조금 추한에 필요한이는 이유에 대한 자세한 내용은

3,6 { 
    /This/d 
} 

참조 여기서는 https://unix.stackexchange.com/questions/13711/differences-between-sed-on-mac-osx-and-other-standard-sed