Вот как выглядит файл (вы можете видеть, что это разделенный запятыми файл, где первый столбец каждой строки - это имя «Team», за которым следует ^M):

Team,League,Games Played,At Bats,Runs,Hits,Doubles,Triples,Home Runs,RBI,Stolen Bases,Caught Stealing,Walks,Strike Outs,Intentional Walks,Hit By Pitch,Sacrifice Hits,Sacrifice Flies,Grounded Into Double Play,Batting Average,On Base Percentage,Slugging Percentage,Salary,Position,x,y,Player Name,Plate Appearences,Singles,Total Bases,Runs Created,ExpWS,Win Shares Percentage,Win Shares Above Bat,Win Shares,Career Win Shares,OnBase + Slugging^MDetroit,AL,86,343,58,116,20,2,6,36,4,3,21,16,0,8,2,4,9,0.338,0.386,0.461,4600000,2B,2.8,4,Placido Polanco,378,88,158,57.26455026,10,0.749,8,15,96,0.846^MNY Mets,NL,87,275,36,66,13,0,11,29,0,1,32,39,7,2,2,2,12,0.24,0.322,0.407,3750000,1B,3.6,3.5,Doug Mientkiewicz,313,42,112,35.06709265,9,0.195,-3,3,66,0.729^MDetroit,AL,87,334,48,107,15,4,5,23,2,3,24,45,3,2,0,1,9,0.32,0.368,0.434,4000000,SS,1.2,4,Carlos Guillen,361,83,145,52.61772853,9,0.418,1,8,79,0.803^MWashington,NL,87,309,38,85,21,2,7,32,0,0,31,30,3,1,2,4,9,0.275,0.339,0.424,7000000,2B,2.8,4,Jose Vidro,347,55,131,43.7925072,9,0.589,4,11,130,0.763^MNY Mets,NL,87,267,31,68,9,4,3,24,6,1,14,43,1,5,5,4,2,0.255,0.3,0.352,7033333,2B,2.8,4,Kazuo Matsui,295,52,94,26.12881356,8,0.294,-1,5,19,0.652^MArizona,NL,88,161,23,37,6,1,4,20,3

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

2 ответа2

1

^M = 0x15, он же возврат каретки. Ваши строки заканчиваются парой DRL-ish CRLF, а не просто LF, используемым в текстовых файлах Unix. Это можно исправить с помощью tr:

tr -d '\r' <dosfile >unixfile

В пакете fromdos есть также команды todostofrodos), а также команды dos2unixunix2dos) в пакете dos2unix . Последние два являются более полными, чем просто tr , они также могут конвертировать из кодовых страниц DOS/Windows (или даже из Windows UTF-16 в UTF-8).

0

Вероятная проблема - файл был создан в системе Windows. Чинить:

vi file

<ESC> чтобы убедиться, что вы находитесь в командном режиме

:%s/<CTRL>-V<CTRL>-M/\r/g

:wq

Это заменяет каждый экземпляр ^ M новой строкой.

PS Я рекомендую сделать копию файла перед редактированием в случае проблем.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .