Benötigen Sie Hilfe zu einem Teil des Bash-Skripts und es muss eine bestimmte Musterzeichenfolge finden. Eine Probe Zeichenfolge ist unten angegeben:Suche nach Kombination und Muster von Strings
//*-----------
//* %%SET %%ABC = %%BLANK
//* %%SET %%RESTART = %%BLANK7
//* %%SET %%DANGO= 236985
//*-----------
//* %%IF %%ODATE EQ 123456
//* %%SET %%ABC= GSG34
//* %%SET %%RESTART = RESTART
//* %%ENDIF
//*-----------
//* %%IF %%ODATE EQ 463123
//* %%SET %%DANGO= 236985
//* %%ENDIF
//*-----------
//* %%IF %%ODATE EQ 15641
//* %%SET %%RESTART = %%BLANK7
//* %%ENDIF
//*-----------
- Ich brauche die Kombination von Odate, ABC, NEUSTART innerhalb eines IF und ENDIF Zustand finden
- I specificly beween IF und ENDIF überprüfen müssen. Außerdem sollte es auf eine Bedingung prüfen, dass die drei Parameter ODATE, ABC und RESTART zwischen IF und ENDIF existieren. Wenn die Bedingung erfüllt ist, sollte sie gedruckt werden.
- habe ich versucht, die
cat Datei unter Befehle | sed -n '/ %% IF /,/%% ENDIF/p'
//* %%IF %%ODATE EQ 123456
//* %%SET %%ABC= GSG34
//* %%SET %%RESTART = RESTART
//* %%ENDIF
//* %%IF %%ODATE EQ 463123
//* %%SET %%DANGO = 236985
//* %%ENDIF
//* %%IF %%ODATE EQ 15641
//* %%SET %%RESTART = %%BLANK7
//* %%ENDIF
Ich brauche nur unten zu finden:
//* %%IF %%ODATE EQ 123456
//* %%SET %%ABC= GSG34
//* %%SET %%RESTART = RESTART
//* %%ENDIF
Wie würde ich in der Lage sein, dies zu tun?
Vielen Dank für die schnelle Antwort. Aber anstatt von der ODATE-Nummer herausgefiltert zu werden, können wir spezifisch zwischen IF und ENDIF überprüfen. Außerdem sollte es auf eine Bedingung prüfen, dass die drei Parameter ODATE, ABC und RESTART zwischen IF und ENDIF existieren. –
Sie können den folgenden Befehl 'awk 'verwenden/IF/&&/ABC/&&/RESTART /' RS = '// \\ * --- + \ n'' – hek2mgl
Vielen Dank. Das hat die Magie gemacht. –