2015-06-11 2 views
1

Я пытаюсь заменить буквальный термин \n (не символ новой строки, буква) литералом \\n с использованием sed. Я попытался это:Замена замены новой строки ' n' с экранированной escape-линией новой строки '\ n' с использованием sed

echo '"Refreshing \n\n\n state prior"' | sed 's/\\n/\\\n/g' 

Этот «работает», но мне это нужно для вывода буквенных символов \\n. Сейчас я в конечном итоге с чем-то вроде этого:

"Refreshing \ 
\ 
\ 
state prior" 

Есть ли способ для меня, чтобы поддерживать \\n в sed выходе?

+0

Когда я запускаю эту команду, мой вывод «Обновляется \ n \ n \ n state before» ' – rednaw

+1

Я смущен тем, что вы пытаетесь сделать здесь точно. Входит ли ваш вход '\ n' или содержит фактические строки перевода? Что вы пытаетесь получить в своем выпуске? '\ N'? '\\ n'? '\ n '? –

+0

Я хочу иметь '\\ n'. Я должен упомянуть об этом в bash на Ubuntu 14.04. Когда я сохраняю вывод в переменной и перебираю эту переменную, '\ n' опущен, и я остаюсь только с' \ '. – tubaguy50035

ответ

2

Чтобы получить \\n добавить еще \ один к вашему СЭД:

echo "Refreshing \n\n\n state prior" | sed 's/\\n/\\\\n/g' 

Что вы пытаетесь делать с \\\n было напечатать \ персонаж и th en add \n, который вызвал новую строку.

+0

Спасибо за объяснение. – tubaguy50035

+0

@ tubaguy50035 Мне любопытно, в чем проблема с моим ответом здесь: http://stackoverflow.com/a/30785781/171318. Это выглядит намного проще, но, вероятно, я что-то упускаю? – hek2mgl

+1

@ hek2mgl Это не результат, который я искал. Если бы я мог просто вывести вход, я бы не стал задавать этот вопрос. :) – tubaguy50035

1

Изменить sed 's/\\n/\\\n/g' на:

sed 's/\\n/\\\\n/g' 

Если вы хотите заменить \n на \\n

Смежные вопросы