2012-02-27 46 views
1

我有一個腳本需要添加邏輯,如果有人從winscp添加文件並且不在轉換時轉換爲純文本。所以有些時候我們會得到一些特殊的字符(^ m),我想刪除它們 這是我的代碼。需要在Unix腳本中添加邏輯從Windows轉換爲Unix格式

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 

 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 

我試圖用awk命令,但它不是看起來很不錯。

請協助。

+0

我認爲你正在尋找這個:http://stackoverflow.com/a/5446956/78845 – Johnsyweb 2012-02-27 08:58:50

回答

1

大多數實現將提供像dos2unixd2u這樣的工具來從行末移除回車符。您可以使用類似:

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

如果沒有dos2unix命令,你可以做同樣的事情sed

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

-i是就地編輯。如果您的sed版本沒有該版本,那麼您必須使用上述代碼dos2unix中使用的相同臨時文件技巧。