Нужно добавить логику в скрипт Unix конвертировать из Windows в формат Unix - PullRequest
1 голос
/ 27 февраля 2012

У меня один сценарий должен добавить логику, что если кто-то добавить файл из 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 Ответ

1 голос
/ 27 февраля 2012

В большинстве реализаций предусмотрены такие инструменты, как 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 выше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...