Всунутые распадающиеся символы в строки в моем подходе. Найденный рабочим подходом, но не может понять это

Если Вы будете не мочь позволить себе жить с рисками прокручивающегося дистрибутива выпуска (иногда, то вещи повредятся, и обновления не будут гладкими - это на основе моего опыта с Arch), ожидайте Монетного двора 13.

Иначе находящийся в Debian Монетный двор должен быть в порядке.

1
16.09.2013, 01:53
3 ответа

группы получения

Ваш первый пример был близок, но Вы говорите sed то, что Вы хотите взять 2 символа за один раз с \(.\)\(.\) бит, чтобы сделать это с помощью группы получения Вы могли скорректировать его как так:

$ echo ahebhaaa | sed 's/\(.\)/\1\n/g'
a
h
e
b
h
a
a
a

использование и

Относительно почему sed пример с & работы. & в поиске и замене то, чему когда-либо символы соответствовало регулярное выражение. Так все, что не было a \n.

Примеры

$ echo "123 abc" | sed 's/[0-9]*/&&/'
123123 abc

Первое & печатает символы, которые были подобраны шаблоном ([0-9]*), 123. Второе & печатает их во второй раз.

$ echo "123 abc" | sed 's/ab/&&&/'
123 abababc

Шаблон, который мы ищем, ab. Поскольку мы обходим строку 123 abc sed печатает неподобранные символы, 123. Затем строка ab встречен, который в той точке соответствия, что мы ищем и заменяем на. Так sed затем замены это с 3 копиями какой подобранный (abbab). Наконец sed печать c.

Нотация [^\n] создает ряд не конец символа строки. Поэтому думайте sed поскольку это идет по Вашей строке текста, ahebhaaa, это тестирует каждый из этих символов, и высказывание "Является этим не a \n"? Если это не конец символа строки, то sed делает поиск и замену на этом символе и & печать, что было подобрано, т.е. символ, наряду с символом новой строки. Это затем повторяет это, когда это идет ahebhaaa строка.

Ссылки

4
27.01.2020, 23:12
  • 1
    Большое объяснение! & это - часть стандарта regex? Я не помню использовать его когда-либо прежде –  Jim 15.09.2013, 13:24
  • 2
    @Jim - да это - стандартный компонент, я не видел, что это использовало меня так очень также. Я добавлю ссылку, если Вы захотите читать на ней немного больше. –  slm♦ 15.09.2013, 13:26
  • 3
    @Jim - посмотрите обновления. –  slm♦ 15.09.2013, 13:30

Я не понимаю, почему \n играет роль в том примере, так как это - однострочная ситуация с пространством шаблона, таким образом, нет никаких новых строк. Поэтому это должно быть достаточным:

sed 's/./&\n/g'
2
27.01.2020, 23:12

Альтернатива в Perl

echo "abcdefg"|perl -nle 'print for split//'
2
27.01.2020, 23:12
  • 1
    +1:Can не выясняет, как выполнить остроты жемчуга от удара как этот –  Jim 15.09.2013, 19:10
  • 2
    @Jim man perlrun поможет Вам с использованием переключателей. "Волшебные" остроты как вышеупомянутое делают интенсивное использование специальных переменных Perl. Вышеупомянутый оператор при явном создании, чтения print $_ foreach $_ (split //,$_) Посмотрите man perlvar для больше на специальных переменных. –  Joseph R. 15.09.2013, 20:19

Теги

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