Как удалить символы? M? - PullRequest
2 голосов
/ 09 июня 2010

У меня есть файл, сгенерированный из окон, который я должен вставить в скрипт под Linux.Мой скрипт работает нормально, за исключением того факта, что в конце каждой строки я получаю ^ M char.

Как мне удалить его с помощью bash?

В настоящее время мой скрипт:

#/bin/bash
IFS=$'\n'
for CUSTOMER in `cat exp.csv`
do
    echo $CUSTOMER
done

Ответы [ 5 ]

5 голосов
/ 09 июня 2010

Позвоните dos2unix на exp.csv перед дальнейшей обработкой.

4 голосов
/ 09 июня 2010

^ M должен быть символом новой строки Windows \ r, поэтому вам просто нужно удалить все \ r. Вы можете добиться этого с помощью инструмента tr, который вы можете вызвать из вашего скрипта bash, это из статьи википедии (я не проверялэто):

tr -d '\r' < inputfile > outputfile

Поэтому из bash должно быть что-то вроде

VAR=`echo -n $CUSTOMER | tr -d '\r'`
1 голос
/ 09 июня 2010

Я делаю это много, используя tr.Символ CR - это 013 в восьмеричном виде:

tr -d '\013' < $FILE

Так что в вашем цикле это будет просто

for CUSTOMER in `tr -d '\013' < exp.csv`
0 голосов
/ 14 июня 2016

Есть несколько способов удалить плохой char M из вашего файла

  1. использовать команду dos2unix file_name
  2. открыть файл в редакторе vi, перейти к Командный режим и введите :%s/ctrl+v ctrl+m//g это удалит все плохое символы из вашего файла. теперь используйте :wq для сохранения и выхода
  3. sed -e "s/^M//" filename(exist file name) > newfilename(new name)

    sed -e "s / ^ M //" имя файла (имя существующего файла)> newfilename (новое имя)

ПРИМЕЧАНИЕ: чтобы найти плохие символы на сервере Unix, нажмите на команду ниже для всех файлов Java

find . -name "*.java*"  -type f | xargs grep -l ^M *

Аналогично вы можете использовать "*.*" вместо "*.java" для всех типов файлов

0 голосов
/ 09 июня 2010

команда dos2unix в файле

...