2016-12-20 3 views
0

Я хочу Вставить строку с "'" в качестве специального символа в нескольких файлах. Все файлы, в которые я хочу вставить, имеют строку, после которой я хочу выполнить мой INSERT.SED: Вставить строку со специальным символом

например:

файла Перед ВСТАВКА:
...
ОТ LOCAL: LOAD_FILE
REJECTED ДАННЫЕ: REJECT_PATH
...
файла После вставки:
.. .
ОТ МЕСТНОГО: LOAD_FILE
DELIMITER AS '|'
REJECTED ДАННЫЕ: REJECT_PATH
...

Я пытался записывать много SED команды, но они генерируют ошибки. Один из них:

СЭД 'LOAD_FILE/а/DELIMITER AS \' \ | \ '/ г' SOURCE> НАЗНАЧЕНИЯ

ответ

0

Использование окружающих двойные кавычки:

sed "/FROM LOCAL :LOAD_FILE/s//&\nDELIMITER AS '|'/" file 

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

sed '/FROM LOCAL :LOAD_FILE/s//&\nDELIMITER AS '"'|'"'/' file 
+0

работал просто отлично, спасибо много .. :) –

1
awk -v line='DELIMITER AS '"'|'"'' '1; /LOAD_FILE/{print line }' input 
FROM LOCAL :LOAD_FILE 
DELIMITER AS '|' 
REJECTED DATA :REJECT_PATH 
0

Это может работать для вас (GNU СЭД):

sed '/LOAD_FILE/aDELIMITER AS '\'\|\' file 

Это добавляет строку DELIMITER AS \'\|\' после матча на LOAD_FILE

N.B. СЭД команда состоит из двух частей, /LOAD_FILE/aDELIMITER AS сцепляется с \'\|\'

Если вы предпочитаете:

sed 's/LOAD_FILE/&\nDELIMITER AS '\'\|\''/' file 
Смежные вопросы