안녕하십니까, BSD sed에서 다음을 수행하려면 어떻게해야합니까?BSD sed에서 줄 바꾸기를 어떻게 사용합니까?
sed 's/ /\n/g'
매뉴얼 페이지에서 \ n이 대체 문자열 내에서 문자 그대로 취급되므로이 동작을 어떻게 피할 수 있습니까? 대체품이 있습니까?
Mac OS Snow Leopard를 사용하고 있는데, fink를 설치하여 GNU sed를 얻을 수 있습니다.
쉘에서안녕하십니까, BSD sed에서 다음을 수행하려면 어떻게해야합니까?BSD sed에서 줄 바꾸기를 어떻게 사용합니까?
sed 's/ /\n/g'
매뉴얼 페이지에서 \ n이 대체 문자열 내에서 문자 그대로 취급되므로이 동작을 어떻게 피할 수 있습니까? 대체품이 있습니까?
Mac OS Snow Leopard를 사용하고 있는데, fink를 설치하여 GNU sed를 얻을 수 있습니다.
쉘에서, 당신은 할 수 있습니다 :
sed 's/ /\
/g'
이 (가) 줄 바꿈을 삽입하는 백 슬래시 후 키를 입력 타격.
환상적입니다, 감사합니다 Wooble. BSD sed가 대체 문자열에서 \ n을 지원하지 않는 이유는 무엇입니까? 그냥 궁금해서. –
확실치 않지만 대체 문자열에서 이스케이프를 전혀 지원하지 않기로 결정한 것으로 보입니다. sed 'y// \ n /'는 문자열 교체 만 수행하지만 작동하는 것처럼 보입니다. ''를 정규 표현으로 대체해야한다면 실패 할 것입니다. 또한, \ n 특별 한 케이스 것 같다; \ r와 함께 당신은 'r'을 얻을 수 있습니다. – geoffspear
+1하지만이 기능은 쉘 기능 [ANSI C quoting] (http://www.gnu.org/software/bash/manual/bash.html#ANSI_002dC-Quoting) ('$ '..)에 의존합니다. 일부 쉘은 그것을 지원하지 않습니다 (예 :'dash' - POSIX의 일부가 아닙니다). 또한 두 개의 작은 따옴표로 묶인 문자열 사이에'$ '\ n "을 쐐기로 붙이는''/'\ ''\ ''/ ''은 개념적으로 명확하고 강력합니다. 또는'$ 's// \\\ n/g'('\'를 이스케이프해야 함)를 사용하십시오. – mklement0
사용의 용이성을 위해, 나는 개인적으로 자주
cr="\n"
# or (depending version and OS)
cr="
"
sed "s/ /\\${cr}/g"
은 그래서 1 개 라인에 남아 사용합니다.
흥미 롭; 'cr'보다는'nl' 변수를 호출 할 것을 제안 할 수 있습니까? [ANSI C quoting] (http://www.gnu.org/software/bash/manual/bash.html#ANSI_002dC-Quoting)을 지원하는 쉘을 사용한다고 가정합니다 (예를 들어,'bash','ksh','zsh '), 당신은'cr = $ '\ n "'에 대한 할당을 단순화 할 수 있습니다; 플랫폼 차이에 대해 걱정할 필요가 없습니다. – mklement0
"유닉스"에서'$ '\ n''에 대한 멋진 조언을 구하십니까? 실제로 도움이 될 것입니다. (제 썬은'\ n '과 같은 할당/동작에 대해 약간의 문제를 제공합니다.) – NeronLeVelu
'$'\ n "(ANSI-C 인용)은 올바른 _shell_ ('bash', 'ksh' 또는'zsh' -'dash'와 같은 POSIX- 기능 전용 쉘이 아니라) 플랫폼이 중요하지 않아야합니다. ('bash'는 버전 2.0에서 기능을 선보였습니다 (오래전에'ksh'와'zsh'에 대한 확신이 없었습니다. 그러나 현재 시스템에 최신 버전이있을 것으로 기대합니다). – mklement0
작은 수정 : '\ n'은 문자 그대로 취급되지 않으므로 리터럴 'n'으로 변환됩니다 (즉, '\'는 삭제되지만 분명히 여전히 원하는 결과는 아닙니다). – mklement0