2017-01-02 5 views
-1

ich unter Datei:Verwendung sed eine Zeichenfolge in solaris ersetzen

. TAU 4236-DA 20 
4236-DA - SMS 
4236-DA - EMAIL 
MID=4236,SC= 
{AnyText} 
,DABAL1= 
{AnyText} 
,DAEXP1= 
{AnyText} 
,MSISDN= 
{AnyText} 
» 
« 
. TAU 3065-DA 20 
3065-DA - SMS 
3065-DA - EMAIL 
MID=7364,DABAL1= 
{AnyText} 
,DAEXP1= 
{AnyText} 
,MSISDN= 
{AnyText} 
,USEDVAL= 
{AnyText} 
,EXCESS= 
{AnyText} 
» 

i unten ausgegeben werden soll:

. TAU 4236 20 
4236-DA - SMS 
4236-DA - EMAIL 
MID=4236,SC= 
{AnyText} 
,DABAL1= 
{AnyText} 
,DAEXP1= 
{AnyText} 
,MSISDN= 
{AnyText} 
» 
« 
. TAU 3065 20 
3065-DA - SMS 
3065-DA - EMAIL 
MID=7364,DABAL1= 
{AnyText} 
,DAEXP1= 
{AnyText} 
,MSISDN= 
{AnyText} 
,USEDVAL= 
{AnyText} 
,EXCESS= 
{AnyText} 
» 

[Ich möchte von -DA entfernen. TAU-Linie]. PLZ Hilfe. Bitte beachten Sie auch, dass in der Datei mehrere Zeichenfolgen anstelle von "-DA" vorhanden sind, die ich entfernen möchte. wie "-DA", "-LA", "-MA"

+0

Bitte addieren. – Cyrus

+0

Geben Sie Feedback zu den bereitgestellten Antworten und _accept_ die Lösung, mit der Sie das Problem lösen konnten. – Inian

+0

Jungs vielen Dank, aber mein eigentliches Problem ist immer noch nicht gelöst. Diese Zeichenfolge "-DA" ist in der Datei nicht wirklich konstant. an einigen Stellen ist es "-DA" und in einigen ist es wie "-MA", "-EU", "-schwelle". Ich habe versucht mit "cat sms-pattern-triggers.ptc-kaimad | sed -r 's/(TAU \ s + [0-9] {4}) - [Az] [Az]/\ 1/g'" aber es entfernt auch nicht alle Alhphabets nach demh (-) – user7352907

Antwort

1

Sie verwenden können Gruppierung TAU XXXX wie folgt anzupassen:

sed -r 's/(TAU\s+[0-9]{4})-DA/\1 /g' data.txt 

Diese -DA mit 3 Plätze ersetzen wird, wenn -DA durch die Gruppe vorhergehenden (TAU\s+[0-9]{4})

oder mit awk: Solaris-Version auf Ihre Frage

awk '{ print gensub(/(TAU\s+[0-9]{4})-DA/,"\\1 ","g",$0); }' data.txt 
+1

Schöne Vorschläge, aber wie OP erwähnt Ich glaube nicht, dass Solaris das '-r' Flag für' sed', sondern nur 'POSIX'-only Optionen unterstützt. – Inian

+0

Der Befehl sed, den Sie oben erwähnt haben, funktioniert, aber ich habe versucht, DA im obigen Befehl mit [A-z] zu ersetzen, um alle Alphabete nach dem Bindestrich (-) einzuschließen, aber es funktioniert nicht. Kannst du empfehlen? – user7352907

+0

versuchen Sie mit '[a-Z] +' anstelle von DA: '/ (TAU \ s + [0-9] {4}) - [a-Z] + /' –

Verwandte Themen