2012-04-10 28 views
1

ich text1.txt haben, dieErsetzen von Text in 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> 

enthält Und ich möchte diesen Teil ersetzen dies ein beliebiger Wert sein kann - fest einprogrammiert kein mit abc

Was sollte sei der richtige SED-Befehl? Beachten Sie, dass ich aufgrund der Umgebungsbeschränkung nicht die Flexibilität habe, irgendeine Sprache wie Perl, Python oder Ruby zu verwenden und nur den Unix-Befehl verwenden kann. Und keine hardcoded außer param1

Vielen Dank im Voraus!

+0

[Diese Frage SO] (http://stackoverflow.com/questions/1074450/sed -Ersatzteil-einer-Linie) kann helfen. –

+0

Wie wäre es mit allen Beispielwerten im Kommentar? –

+0

@shiplu Könntest du erklären, was einen Kommentar ausmacht, da laut OP die Frage 'text1.txt' eine normale Textdatei ist, also könnte alles einen Kommentar anzeigen? – beny23

Antwort

1

Der Aufruf Sie wollen, ist

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

Dies könnte alle Beispielwerte in Kommentar ändern. Nein? –

+0

Wenn Sie meinen, dass die sechsstellige Sequenz 'param1 =' immer den Rest der Zeichen auf seiner Zeile mit 'abc' gefüllt hat, auch wenn es in einem" Kommentar "erscheint, dann ja. Aber das OP hat nie etwas über Kommentare gesagt. –

+0

Vielen Dank Ray Toal – iwan

1

Es klingt wie Sie so etwas wie s/<.\+>$/<abc>/ wollen:

$ 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>