2016-05-12 8 views
-2

Meine Eingabe ist:Wie verwende ich den Befehl Sed, um die folgende Ausgabe zu erhalten?

"INTC_KEY,ABC1|OBJID,ABC2" 

Und ich möchte, wie die Ausgabe in eine Datei senden:

DDS.INTC_KEY = REPL.OBJID AND DDS.ABC1 = REPL.ABC2 

Hier ist, was ich bisher versucht habe:

sed 's/^/DDS./g' | sed 's/|/=REPL./g' | tr '\n' '~' | sed 's/~/_N~/g' | sed 's/~$/\n/g' | sed 's/~/~\n/g' | sed 's/~/ AND/g' > ${LOG_DIR}/JOIN.tmp 
+1

Sie sollten einige Hinweise darauf geben, was Sie bereits versucht (oder erforscht) haben. –

+0

Hallo Anthony, das habe ich gemacht "sed 's/^/DDS./g' | sed 's/| /=REPL./g' | tr '\ n' '' '| sed' s/~/_N ~/g '| sed' s/~ $/\ n/g '| sed' s/~/~ \ n/g '| sed' s/~/AND/g '> $ {LOG_DIR}/JOIN. tmp " –

+0

Ich habe Ihre Frage bearbeitet, um diese Informationen aufzunehmen - aber es ist am besten, wenn Sie die Frage selbst bearbeiten. Im Allgemeinen haben Sie eine viel bessere Chance, gute Antworten zu erhalten, wenn Ihre Frage klarer ist, einige der von Ihnen durchgeführten Recherchen zeigen, was Sie versucht haben, welche Fehler Sie haben usw. Siehe [Wie frage ich? eine gute Frage?] (http://stackoverflow.com/help/how-to-ask) –

Antwort

0

Based In der einzelnen Zeile der Eingabe wird der folgende reguläre Ausdruck die Eingabe in die gewünschte Ausgabe umwandeln:

s/"\([^,]*\),\([^|]*\)|\([^,]*\),\(.*\)"/DDS.\1 = REPL.\3 AND DDS.\2 = REPL.\4/ 

Dieses Shell-Befehl zeigt es funktioniert:

$ echo '"INTC_KEY,ABC1|OBJID,ABC2"' | sed 's/"\([^,]*\),\([^|]*\)|\([^,]*\),\(.*\)"/DDS.\1 = REPL.\3 AND DDS.\2 = REPL.\4/' 

DDS.INTC_KEY = REPL.OBJID AND DDS.ABC1 = REPL.ABC2 

Der reguläre Ausdruck grundsätzlich vier Stücke von Text (die entkam Klammern verwenden), durch die Kommas und vertikale Balken begrenzt und zur Verfügung gestellt als \1-\4 zurück Referenzen für die Substitution.

Hinweis: Ich habe versucht, die Funktionen von standard sed beizubehalten und ich getestet GNU sed mit der POSIXLY_CORRECT Umgebungsvariable auf 1 zu emulieren Standard sed.

+0

Vielen Dank viel Anthony. Das funktioniert jetzt gut. Ich bin neu auf dieser Plattform. Ich werde mich um Dinge kümmern, die du erwähnt hast. Wird klarer sein. –

+0

Sie sind herzlich willkommen @EshanChintawar Da diese Antwort für Sie funktioniert hat, sollten Sie [accept it] (https://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work) akzeptieren, indem Sie auf klicken das Häkchen auf der linken Seite. Dies markiert die Frage als * beantwortet * und (mit Upvotes) ist die Art, wie Dank auf den Stack Exchange-Seiten ausgedrückt werden. Willkommen im Stack Exchange Netzwerk! –

Verwandte Themen