регулярное выражение найти и заменить символы 0x0D, 0x0A

с perl:

uniq -c file | perl -lne 'if (m(^\s*(\d+) (.*)$)) {print $2 if $1 % 2 == 1}'
1
16.10.2011, 01:01
2 ответа

Регулярным выражением для символа пробела, конечно же, является \ s . Однако, поскольку вам нужен непробельный символ, вы можете использовать \ S ! Следовательно, ваше регулярное выражение, которое нужно заменить, будет \ S \ n \ r \ S .

РЕДАКТИРОВАТЬ:

#!/usr/bin/perl
use strict; use warnings;
my $pattern = "xxxxxxxxxxxxxxxxxxxy\n\ryxxxxxxxxxxxxxxxxxxx \n\r xxxxxxxxxxxxxxxxxxxy\n\ryxxxxxxxxxxxxxxxxxxx";
$pattern =~ s/(\S)(\n\r)(\S)/$1$3/g;
print "$pattern\n";
exit;

результат:

xxxxxxxxxxxxxxxxxxxyyxxxxxxxxxxxxxxxxxxx 

 xxxxxxxxxxxxxxxxxxxyyxxxxxxxxxxxxxxxxxxx

Я заменил регулярное выражение на $ 1 $ 3 , чтобы вы сохранили символы, которым соответствует \ S .

1
29.04.2021, 00:58

Вот способ с помощью GNU awk. Установите разделитель записей RS в соответствии с разделителями, которые вы хотите сохранить, и удалите другие \r\n последовательности.

gawk -vRS=' \r\n ' '{gsub(/\r\n/, ""); printf "%s%s", $0, RT}'
0
29.04.2021, 00:58

Теги

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