需要在Unix脚本中添加逻辑从Windows转换为Unix格式

时间:2012-02-27 08:53:50

标签: unix

我有一个脚本需要添加逻辑,如果有人从winscp添加文件并且在传输时不转换为纯文本。所以有一段时间我们得到一些特殊字符(^ m),我想删除它们 这是我的代码。

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命令,但看起来并不好。

请协助。

1 个答案:

答案 0 :(得分: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代码中使用的相同临时文件技巧。