MAC OSX를 사용하여 파일의 문자열 바꾸기

MAC OSX를 사용하여 파일의 문자열 바꾸기

MacOSX 10.10에서 (대형) 파일의 문자열을 바꿔야 합니다. 내 파일은 다음과 같습니다.

Y16-TUL-SUB_ Y16-TUL-SUB_ Y16-TUL-SUB_ Y16-TUL-SUB_ Y16-TUL-SUB-
Y16-TUL-SUB_ Y16-TUL-SUB_

Y16_TUL_SUB_로 바꿔야 합니다 Y16-TUL-SUB-. 파일 이름은 test.txt.

나는 다양한 제안 을 많이 시도했습니다 sed. 예를 들면 다음과 같습니다.awkpython

#!/usr/bin/env python import sys import os import tempfile

 tmp=tempfile.mkstemp()

 with open(sys.argv[1]) as fd1, open(tmp[1],'w') as fd2:
     for line in fd1:
         line = line.replace('Y16_TUL_SUB_','Y16-TUL-SUB-')
         fd2.write(line)

 os.rename(tmp[1],sys.argv[1])

아니면 sed맥에서도 작동한다고 하네요

또는 find:

 find . -type f -name test.txt | xargs sed -i ""
 "s/Y16_TUL_SUB_/Y16-TUL-SUB-/g'

또는 sed:

 sed -i -e "s/Y16_TUL_SUB_/Y16-TUL-SUB/g" test.txt

또는awk

 awk '{gsub(/Y16_TUL_SUB_/,"Y16-TUL-SUB")}' test.txt

이러한 명령은 모두 실행되어 빈 출력 파일을 반환했거나 어떤 경우에도 원본 파일에서 아무것도 변경되지 않았습니다.

내가 뭘 잘못했나요?

답변1

sedOS X에서 사용하는 방법.

테스트 파일을 만들었습니다.

$ cat test.txt
tasdasdasd

asd
asd
as
d
as
d
ddddddd

ffdfdfdfdfdf

호출 sed( ''매개변수여야 함):

$ sed -i '' "s/as/replaced_ad/g" test.txt

출력 파일 표시:

$ cat test.txt
treplaced_addreplaced_addreplaced_add

replaced_add
replaced_add
replaced_ad
d
replaced_ad
d
ddddddd

ffdfdfdfdfdf

sedOS X에서는 GNU와 약간 다릅니다 sed. OS X 터미널에서 사용해보면 man sed사용법을 알 수 있을 것이다 sed.

답변2

이상한. "를 '로 바꾸는 것은 분명히 작동합니다.

sed -i '' "s/as/replaced_ad/g" test.txt

그동안 아무것도 안 했어

sed -i '' 's/as/replaced_ad/g' test.txt

나에게 필요한 것을 주었다. ????

남자다움은 작은 따옴표와 큰 따옴표 사이에 차이가 없는 줄 알았는데? ? ?

글쎄요, 제가 일을 계속할 수 있는 한... 다시 한 번 Yurij에게 감사드립니다.

관련 정보