我有一个脚本需要添加逻辑,如果有人从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
命令,但看起来并不好。
请协助。
答案 0 :(得分:1)
大多数实现都会提供dos2unix
或d2u
等工具来从行尾删除回车符。你可以使用类似的东西:
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
代码中使用的相同临时文件技巧。