2012-04-10 2 views
1

У меня есть text1.txt, содержащегозаменить текст в UNIX SED

<this can be anything, any number of line - no hardcoded> 
<this can be anything, any number of line - no hardcoded> 
    param1=<this can be any value - no hardcoded> 
<this can be anything, any number of line - no hardcoded> 
<this can be anything, any number of line - no hardcoded> 

И я хотел бы заменить эту часть это может быть любое значение - не жёстко с аЬсом

Что должны быть правой командой SED? Обратите внимание, что из-за ограничений среды я не имею возможности использовать любой язык, такой как perl, python или ruby ​​~, и может использовать только команду Unix. И без кодирования, кроме param1

Большое спасибо!

+0

[Этот вопрос SO] (http://stackoverflow.com/questions/1074450/sed -replace-part-of-a-line) может помочь. –

+0

Как насчет всех значений образца в комментарии? –

+0

@shiplu Не могли бы вы пояснить, что представляет собой комментарий, поскольку вопрос OP 'text1.txt' является обычным текстовым файлом, поэтому что-либо может указывать на комментарий? – beny23

ответ

1

Вызов вы хотите

sed -e 's/param1=.*/param1=abc/' text1.txt 
+0

Это может изменить все значения образца в комментарии. Нет? –

+0

Если вы имеете в виду, что шестисимвольная последовательность 'param1 =' всегда будет содержать остальную часть символов на своей строке, заполненную 'abc', даже если она появляется в« комментарии », а затем да. Но ОП никогда ничего не говорил о комментариях. –

+0

Большое спасибо Ray Toal – iwan

1

Это звучит, как вы хотите что-то вроде s/<.\+>$/<abc>/:

$ cat test1.txt 

<this can be anything, any number of line - no hardcoded> 
<this can be anything, any number of line - no hardcoded> 
    param1=<this can be any value - no hardcoded> 
<this can be anything, any number of line - no hardcoded> 
<this can be anything, any number of line - no hardcoded> 

$ sed 's/<.\+>$/<abc>/' test1.txt 

<abc> 
<abc> 
    param1=<abc> 
<abc> 
<abc> 
Смежные вопросы