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
. 예를 들면 다음과 같습니다.awk
python
#!/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
sed
OS 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
sed
OS 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에게 감사드립니다.