2012-02-27 3 views
1

하나의 스크립트에서 winscp의 파일을 추가하고 전송 중에 일반 텍스트로 변환하지 않으면 논리를 추가해야합니다. 그래서 약간의 시간에 우리는 어떤 특수 문자 (^ m)를 얻습니다. 나는 그것을 제거하고 싶습니다. 여기에 제 코드가 있습니다. Unix 스크립트에서 논리를 추가해야합니다. Windows에서 Unix 형식으로 변환해야합니다.


 if [ $STATUS = 'bad' ]; then 
       echo "The data file not found." 
       echo "The data file not found." >> $LOG_FILE 
       echo "" >> $LOG_FILE 
       SHELL_STEP='step5' 
     else 
       SHELL_STEP='step3' 
     fi 
fi 

cd $HOME_DIR 
if [ $SHELL_STEP = 'step2' ]; then 



if [ -s $DATA_DIR/$DATA_FILE.txt ]; then echo "The data file is present." cat -v new_reguest.txt $ awk '{ sub("\r$", ""); print }' new_request.txt > new_request.txt echo "Data file $DATA_FILE.txt found in $DATA_DIR directory." >> $LOG_FILE echo "" >> $LOG_FILE STATUS='good' else echo "The data file has not arrived yet." fi 
나는 awk 명령을 사용하려고하지만, 좋은 찾고 아니에요.

도와주세요.

+0

당신이 이것을 찾고 있다고 생각합니다 : http://stackoverflow.com/a/5446956/78845 – Johnsyweb

답변

1

대부분의 구현에서는 줄 끝에서 캐리지 리턴을 제거하기 위해 dos2unix 또는 d2u 같은 도구를 제공합니다. 당신은 같은 것을 사용할 수 있습니다 : 당신이 아닌 경우dos2unix 명령을

dos2unix new_request.txt >new_request_2.txt 
mv new_request_2.txt new_request.txt 

을, 당신은 sed과 같은 일을 수행 할 수 있습니다

sed -i 's/\r$//' new_request.txt 

-i은 내부 편집을위한 것입니다. sed 버전에 해당 버전이 없다면 위의 dos2unix 코드에서 사용한 것과 동일한 임시 파일 트릭을 사용해야합니다.