:
: 질문여
: 초보라서 잘모르는데...요...
: 예를 들면
:
: 두개의 a.txt, b.txt 가 있는데요.
: 첫번째에는 This is a car
: 두번째에는 car Car
: 이렇게 있다면 두개를 비교해서
: 같은단어가 있는 car를 찾아서
: 첫번째 문장을 This is a Car로
: 바꿔 출력하려는 스크립트를 만들려는데 안되네요.
: 문장의 단어들은 read를 써서 변수로 읽어들였는데요
: 그리고 if then을 써서 비교는 했는데
: 바꿔지지가 않네여...
: 어떤걸 써야하는지 아시는분좀 좀 도와주세요
제가 생각하기에 a.txt에는 원문파일이 b.txt에는 바꿀문자열이들어 있다고
생각하고 다음과 같이 허접한 스크립트를 만들어 보았습니다.
------------------------- cut here ------------------------
#!/bin/sh
if [ $# != 2 ]; then
echo "usage: $0 [바꿀 문자열 정보파일] [대상파일]"
exit 0;
fi
DATA_FILE=$1
TARGET_FILE=$2
#------------------------------------------------------
# 정보파일 체크
#------------------------------------------------------
if [ ! -f $DATA_FILE ]; then
echo "${DATA_FILE}이 존재하지 않음.";
exit 0;
elif [ ! -r $DATA_FILE ]; then
echo "${DATA_FILE}을 읽을 수 없음";
if [ -O $DATA_FILE ]; then
echo "${DATA_FILE}의 퍼미션 변경.";
chmod 644 ${DATA_FILE};
else
exit 0;
fi
fi
#-----------------------------------------------------
# 대상파일 체크
#-----------------------------------------------------
if [ ! -f $TARGET_FILE ]; then
echo "${TARGET_FILE}이 존재하지 않음.";
exit 0;
elif [ ! -w $TARGET_FILE ]; then
echo "${TARGET_FILE}에 쓸수있는 권한이 없음"
if [ -O $TARGET_FILE ]; then
echo " ${TARGET_FILE}퍼미션 변경."
chmod 644 $resultfile
else
exit 0;
fi
fi
#------------------------------------------------------
# 정보파일 읽기
#------------------------------------------------------
for REGEX in `awk '{ printf("s/%s/%s/g", $1, $2); }' ${DATA_FILE}`
do
perl -pi -e ${REGEX} ${TARGET_FILE};
done--외로워라 이네몸은 뉘와함께 놀아날고.