이 문자의 모든 인스턴스를 대체하기 위해 이 스크립트를 사용하고 싶습니다.묻다"question.txt" 파일의 내용을 포함하는 파일. 대신에 일어나는 일은 모든 인스턴스가묻다파일의 내용은 사라지고 "question.txt"의 내용이 새 파일 하단에 인쇄됩니다.
어떤 아이디어가 있나요?
sed -i.bkp '/Q/{
s/Q//g
r /Users/ericbrotto/Desktop/question.txt
}' Commision.txt
편집 1
어떤 버전을 가지고 있는지 알아보려고 하는데 계속 이런 메시지가 나타납니다.
답변1
이유를 찾은 것 같아요.
파일 이름 뒤에 공백을 넣으면 뒤에 공백이 있는 파일 이름이 검색됩니다. 다음과 같이 문제를 재현할 수 있습니다.
원천:
cat q.dat
Q
Not q
And Q again
And again not
cat kuh.dat
Die dumme
Kuh
파일 이름 "kuh.dat"에 대한 작업 예:
sed '/Q/{
s/Q//g
r kuh.dat
}' q.dat
Die dumme
Kuh
Not q
And again
Die dumme
Kuh
And again not
이제 "kuh.dat"를 사용한 실패한 예가 있습니다.
sed '/Q/{
s/Q//g
r kuh.dat
}' q.dat
Not q
And again
And again not
파일명을 인용하지 않아서 파일명 끝의 공백이 인식되는 것이 저에게는 큰 놀라움이었습니다. 그리고 셸에서는 볼 수 없어서 오랫동안 검색했지만 성공하지 못했습니다. 이 두 예의 차이점은 무엇입니까?