Если Вы будете не мочь позволить себе жить с рисками прокручивающегося дистрибутива выпуска (иногда, то вещи повредятся, и обновления не будут гладкими - это на основе моего опыта с Arch), ожидайте Монетного двора 13.
Иначе находящийся в Debian Монетный двор должен быть в порядке.
Ваш первый пример был близок, но Вы говорите 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
строка.
Я не понимаю, почему \n играет роль в том примере, так как это - однострочная ситуация с пространством шаблона, таким образом, нет никаких новых строк. Поэтому это должно быть достаточным:
sed 's/./&\n/g'
Альтернатива в Perl
echo "abcdefg"|perl -nle 'print for split//'
man perlrun
поможет Вам с использованием переключателей. "Волшебные" остроты как вышеупомянутое делают интенсивное использование специальных переменных Perl. Вышеупомянутый оператор при явном создании, чтения print $_ foreach $_ (split //,$_)
Посмотрите man perlvar
для больше на специальных переменных.
– Joseph R.
15.09.2013, 20:19
&
это - часть стандарта regex? Я не помню использовать его когда-либо прежде – Jim 15.09.2013, 13:24