2016-07-22 2 views
1

Я пытаюсь заменить строку @STYLESHEET, присутствующую в текстовом файле с <xsl:stylesheet, используя sed.как избежать символа <при замене строки с помощью sed

Я получаю ошибку о том,

имя файла, имя каталога, или синтаксис volumelabel неверен

Ниже мой летучая сценарий:

 ECHO replacing strings in Generated.txt 
     sed s/@STYLESHEET/<xsl:stylesheet'/g Generated.txt > UpdatedGenerated.txt 
     PAUSE 
     type UpdatedGenerated.txt 

Текстовый файл имеет под линией:

@STYLESHEET version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" @END 

ответ

2

< знак в порядке. Тем не менее, у вас есть апостроф в конце замены, не знаю почему. Кроме того, вы должны передать команду sed в виде строки: sed '...' или sed "...". Требуемый тип котировки также зависит от вашей консоли.

Таким образом, это сделает вашу работу сценария хорошо:

sed "s/@STYLESHEET/<xsl:stylesheet/g" Generated.txt > UpdatedGenerated.txt 
    ^^^        ^^^ 
+0

Когда я попробовал sed/s/STYLESHEET/ updatedGenerated.txt, получив неправильный синтаксис. когда я пытаюсь получить команду sed/@ STYLESHEET/xsl: stylesheet/g 'Generated.txt> UpdateGenerated.txt, получив недопустимую команду. когда я пытаюсь без одинарной кавычки и символа <, тогда он отлично работает. – shaiksha

+0

Это может зависеть и от вашей консоли. Вы также можете попробовать двойные кавычки. –

+0

Спасибо Тамас, двойные кавычки работали – shaiksha

1

Он работал после ввода параметров в двойных кавычках. Проблема была не с персонажем <.
sed "s/@STYLESHEET/<xsl:stylesheet/g" Generated.txt > UpdatedGenerated.txt

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