sed + добавляют символ перед каждым числом

Я хочу добавить "/" перед каждым использованием числа sed:

    echo 1 2 3 4 5 6 7  | sed 's/[ ^]*/&\//g'

    /1 /2 /3 /4 /5 /6 /7/

Когда я использую этот синтаксис, почему я добираюсь "/" после 7? Как я могу зафиксировать мой sed синтаксис для получения этого:

    /1 /2 /3 /4 /5 /6 /7
1
задан 23.01.2011, 15:53

2 ответа

Дайте этому попытку:

echo '1 2 3 4 5 6 7' | sed 's|\w\+|/&|g'
2
ответ дан 12.12.2019, 09:15

зафиксировать его: предварительно ожидайте наклонную черту перед началом числа (я использую :разделить шаблон и замену вместо /, никакая потребность выйти из наклонной черты затем)

 % echo 1 2 3 4 5 6 7 | sed 's:\([1-9]\+\):/\1:g'

проблема Вашей команды, который Вы используете *соответствовать также space или каре ^. и не только один из них, но и любое количество их, включая 0. это соответствует в конце строки (после 7) также (и к счастью для Вас также вначале).

для создания этой работы с любым словом (иначе непространство) используют это:

 % echo ha hu 1 2 ho | sed 's:[^ ]\+:/&:g'
2
ответ дан 12.12.2019, 09:15

Теги

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