문자열 추가시 기호 처리 문제 문의 드립니다.

byulbee의 이미지

안녕하세요?
Shell script 내에서, 특정 파일의 첫 번째 행에, 다음 문구를 추가하고자 합니다.
ABCD "*" '(

perl을 사용해서 해 보고 있는데, 잘 안되네요...
다른 기호들은 들어가는데, '(어퍼스트로피)가 문제인거 같습니다.

-------------------------------------------------------------
#!/bin/bash -f
perl -pe '$.==1 and print "ABCD \"\*\" \'\( \n" ' tmp1 > tmp2
-------------------------------------------------------------

이렇게 해주고 실행하면,

./ptmp.sh: line 7: syntax error near unexpected token `('
와 같이 에러가 발생합니다.
여기서 ( 앞에 '(어퍼스트로피)만 제거 하고 하면 잘 추가 되는데요...

위 perl 구문에서 어퍼스트로피(')를 기호로 추가하려면 어떻게 처리해야 하나요?
perl이 아니더라도, 다른 방법이 있다면 도움 부탁드립니다.

감사합니다.

raymundo의 이미지

# 어퍼스트로피의 아스키 코드가 0x27 이니까, \x27 을 출력
perl -pe '$.==1 and print "ABCD \"*\" \x27(\n"' tmp1 > tmp2
# 큰따옴표 안의 큰따옴표 이스케이프도 눈에 거슬리면
perl -pe '$.==1 and print qq|ABCD "*" \x27(\n|' tmp1 > tmp2

좋은 하루 되세요!

byulbee의 이미지

감사합니다^^
알려주신대로 하니 잘 됩니다. 덕분에 잘 해결되었습니다^^~