2016-10-28 1 views
4

저는 꽤 오랜 시간 동안 여기에서 검색해 왔지만, 정말 좋은 정보를 발견했지만, 제 문제에는 전혀 문제가 없습니다. Short-n-sweet, Mac OS 10.11에서 sed를 사용하여 탭 문자를 파이프 문자로 대체하려고합니다. 지금까지 발견 한 모든 정보는 구문이 다른 플랫폼에서는 작동하지만 Mac OS 10.11에서는 작동하지 않을 수 있습니다. 나는 하루 종일 정상적인 표준 문자를 대체 할 수 있고 쉼표 같은 구두점을 사용할 수 있기 때문에 sed가 10.11에서 작동한다는 것을 안다. 그리고 네, \t을 사용해 보았습니다. 나는 위의 문자열에서 , 대신에 \t를 사용하는 경우Mac OS 10에서 sed를 사용하여 텍스트 파일의 탭 문자를 바꿉니다.

sed -i '' -e 's/,/|/g' /Users/username/Desktop/TABs2PIPE.txt 

, 그것은 단순히 파일의 모든 소문자 t를 대체 표준 문자와 함께 작동 내가 찾은 나오지 문자열은 다음과 같다.

그래서, 다른 Macheads이 작업을 얻으려고 나는 정말로 도움을 주셔서 감사합니다, 미리 감사드립니다.

답변

1

OSX sed은 BSD 유래입니다. 이 계통 sed은 Tab 문자 IIRC에 대한 표기법으로 \t을 결코 받아 들여지지 않았습니다. 쉘이 (OSX의 기본 인) bash 경우, 대신이 시도 :

sed -i '' -e $'s/\t/|/g' file_to_process.txt 

$'...'가 떠들썩한 확장이다; '...' 따옴표가 붙어 있지만 C 스타일 백 슬래시 이스케이프가 해석됩니다. bash 맨 페이지에서 :

$'string'의 단어는 특별히 처리됩니다. 이 단어는 문자열으로 확장되고 백 슬래시 이스케이프 문자는 ANSI C 표준에 지정된대로 바뀝니다.

그래서, 처음 두 공간 사이의 간격은 문자 TAB 문자입니다 sed-es/ /|/g을 볼 수, 그리고 그와 함께 옳은 일을해야한다.

쉘이 이 아니고 bash 인 경우 control-V를 입력하고 Tab 키를 눌러 리터럴 탭 문자를 직접 입력 할 수 있습니다.

+0

감사합니다. 이것은 트릭을했다! – MacDudeDonny

-1

길을 sed 백 슬래시 T를 처리하는 경우 이전에 발생하지 않은 경우 확실히 예기치 않게 발생합니다!

이 작동 : < CTRL-V > 및 <TAB> 누르면 실제 키는

sed -i s/\<CTRL-V><TAB>/\|/g text.txt 

.

+0

응답 해 주셔서 고맙습니다. 나는 이미 그것을 시도했으나 터미널은 실제 탭을 붙여 넣지 못하게 할 것이다. – MacDudeDonny

+0

@MacDudeDonny * Control * V가 아니라 ⌘V. (컨트롤 키는 스페이스 바를 사용하여 행의 가장 왼쪽에 있어야하며, 키보드에 따라 "control"또는 "Ctrl"중 하나를 말해야합니다.) – zwol

관련 문제