Informationen über die Umwelt Ich arbeite in:Was ist der Unterschied s/w zwei sed Befehle unten?
$ uname -a
AIX prd231 1 6 00C6B1F74C00
$ oslevel -s
6100-03-10-1119
-Code Block A
(grep schdCycCleanup $DCCS_LOG_FILE | sed 's/[~]/ \
/g' | grep 'Move(s) Exist for cycle' | sed 's/[^0-9]*//g') > cycleA.txt
Codeblock B
(grep schdCycCleanup $DCCS_LOG_FILE | sed 's/[~]/ \n/g' | grep 'Move(s) Exist for cycle' | sed 's/[^0-9]*//g') > cycleB.txt
Ich habe zwei Codeblöcke (siehe oben), die sed verwenden, um den Eingang auf 6 Stellen zu reduzieren, aber ein Befehl verhält sich anders als erwartet.
Probe von Input für die zwei Codeblöcke
Mar 25 14:06:16 prd231 ajbtux[33423660]: 20160325140616:~schd_cem_svr:1:0:SCHD-MSG-MOVEEXISTCYCLE:200705008:AUDIT:~schdCycCleanup - /apps/dccs/ajbtux/source/SCHD/schd_cycle_cleanup.c - line 341~ SCHD_CYCLE_CLEANUP - Move(s) Exist for cycle 389210~
ich die folgende Ausgabe, wenn die Probe über Eingabe durch die beiden Codeblöcke geht.
cycleA.txt Inhalt
389210
cycleB.txt Inhalt
25140616231334236602016032514061610200705008341389210
Ich verstehe, dass meine letzte sed-Befehl (sed ‚s/[^ 0-9] verrohrt * // g ') löscht alle Zeichen außer Ziffern, also habe ich sie aus den Blockcodes weggelassen und die Ausgabe in zwei zusätzliche Dateien eingefügt. Ich bekomme folgende Ausgabe.
cycleA1.txt Inhalt
SCHD_CYCLE_CLEANUP - Move(s) Exist for cycle 389210
cycleB1.txt Inhalt
Mar 25 15:27:58 prd231 ajbtux[33423660]: 20160325152758: nschd_cem_svr:1:0:SCHD-MSG-MOVEEXISTCYCLE:200705008:AUDIT: nschdCycCleanup - /apps/dccs/ajbtux/source/SCHD/schd_cycle_cleanup.c - line 341 n SCHD_CYCLE_CLEANUP - Move(s) Exist for cycle 389210 n
kann ich sehen, dass der erste Codeblock alles andere, dass (SCHD_CYCLE_CLEANUP abzieht - Move (s) existiert für Zyklus 389210) und verwendet die Tilde, aber der zweite Codeblock ersetzt gerade ti Ides mit dem Zeichen n. Ich kann auch sehen, dass es in dem ersten Codeblock für einen Zeilenumbruch nach diesem (sed 's/[~] /) notwendig ist, und deshalb würde ich \ n einen Zeilenumbruch simulieren, aber das ist nicht der Fall. Ich denke meine verschiedenen Ausgabeergebnisse sind wegen der Art, wie reguläre Ausdrücke benutzt werden. Ich habe versucht, in reguläre Ausdrücke zu suchen und habe sie auf Stackoverflow untersucht, aber nicht bekommen, wonach ich gesucht habe. Könnte jemand erklären, wie ich das gleiche Ergebnis von Codeblock B wie Codeblock A erreichen kann, ohne dass ein Teil meines Codes in einer zweiten Zeile steht?
Vielen Dank im Voraus
Welche Version von 'sed' verwenden Sie? Ich habe Version 4.2.1 und ich bekomme die gleichen Ergebnisse mit beiden "sed" -Ausdrücken. – lurker
Sie können die Beispieleingabe und -ausgabe mithilfe der Codeformatierung anstelle der Anführungszeichenformatierung neu formatieren, um sicherzustellen, dass Zeilenumbrüche/etc. werden korrekt angezeigt? –
Es ist eine gute Frage, aber es ist in Lärm begraben. Ziehen Sie in Betracht, ein [MCVE (minimales, vollständiges und verifizierbares Beispiel)] (http://stackoverflow.com/help/mcve) zu erstellen. – mklement0