В Perl, как удалить ^M из файла?

* перед символом означает нечто совершенно иное в объявлении и в теле функции.

int *x; - объявляет указатель на объект int

y = *x; - * разыменовывает указатель x, он противоположен его значению в объявлении. Он устраняет один уровень косвенности, когда в объявлении он добавляет один уровень.

Я думаю, что это причина вашего замешательства.

в вашем примере if (*str1 == *str2) * «убирает» косвенность, и результатом является сам символ (не указатель на указатель)

33
задан Peter Mortensen 7 December 2017 в 00:22
поделиться

6 ответов

Вы узнали, что можно также сделать это:

$line=~ tr/\015//d;
15
ответ дан 27 November 2019 в 17:34
поделиться

^M является возвратом каретки. Можно сделать это:

$str =~ s/\r//g
47
ответ дан 27 November 2019 в 17:34
поделиться

Или 1 лайнер:

perl -p -i -e 's/\r\n$/\n/g' file1.txt file2.txt ... filen.txt
23
ответ дан 27 November 2019 в 17:34
поделиться

Немного не связанный, но удалить ^M из командной строки с помощью Perl, сделайте это:

perl -p -i -e "s/\r\n/\n/g" file.name
7
ответ дан 27 November 2019 в 17:34
поделиться

Для преобразования стиля DOS в UNIX разрабатывают окончания строки:

for ($line in <FILEHANDLE>) {
   $line =~ s/\r\n$/\n/;
}

Или, для удаления UNIX и/или DOS разрабатывают окончания строки:

for ($line in <FILEHANDLE>) {
   $line =~ s/\r?\n$//;
}
2
ответ дан 27 November 2019 в 17:34
поделиться

В хите vi :.

Затем s/Control-VControl-M//g.

Control-V Control-M очевидно, те ключи. Не обстоятельно объясняйте его.

-1
ответ дан 27 November 2019 в 17:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: