좀 희한한 방법이지만.. 비교적 스크립트가 간단합니다.
<pre>
$ # 저는 본래의문장과 바꿀문장사이를 '->'로 구분을 하겠습니다.
$ cat list_for_change
Advanced->advanced
Network->internet
$ cat text_orig
This is Advanced Network Technology Service
$ sed -n 's,(^.*)->(.*$),"1"을 "2"(으)로 바꿀 계획입니다.,p' list_for_change
"Advanced"를 "advanced"(으)로 바꿀 계획입니다.
"Network"를 "internet"(으)로 바꿀 계획입니다.
$ sed -n 's,(^.*)->(.*$),s/1/2/g,p' list_for_change
s/Advanced/advaned/g
s/Network/internet/g
$ sed_list=$(!!)
sed_list=$(sed -n 's,(^.*)->(.*$),s/1/2/g,p' list_for_change)
$ sed -e "$sed_list" text_orig
This is advanced network Technology Service
$ # 또는..
$ sed -n 's,(^.*)->(.*$),s/1/2/g,p' list_for_change > ~/temp.sed
$ sed text_orig -f "${HOME}/temp.sed"
This is advanced network Technology Service
$
뭐... 여러가지 방법이 있지만 제가 선호하는 방법을 썼습니다.
참고로 쉘에서 파일로 부터 할 줄씩 글을 읽어들이는 방법은 아래와 같습니다.
$ while read line; do
> echo $line
> done < list_for_change
Advanced->advanced
Network->internet
$
그럼 즐숙...? 즐삽하시길 ^^
: 쉘 프로그래밍 숙제가 있는데요
:
: 파일1에는
: 텍스트로 This is Advanced Network Technology Service 가 들어있고요
:
: 파일 2에는
: Advanced advanced
: Network internet
:
: 이렇게 있으면
:
: HW2 파일1 파일2
:
: 이렇게 쉘프로그램을 실행하면
: 문자를 치환하는 것입니다.
: 실행하면
: This is advanced internet Technology Service 가 출력돼겠죠...
:
: awk 과 sed 를 사용해야 할것 같은데
: 쉘 프로그램을 별로 안 짜봐서 헤매고 있습니다
: 잡힐듯 하면서도 안 돼네요...
:
: 힌트라도 좀 주세요...
:
: --
: 시작은 끝... 끝은 곧 시작