Fügen Sie den Befehlssatz am Anfang mehrerer Dateien hinzu

Fügen Sie den Befehlssatz am Anfang mehrerer Dateien hinzu

Ich muss ein Skript schreiben, um einen Teil der Datei durch einen anderen zu ersetzen. Ich verarbeite Hunderte von Dateien.

Ich habe eine Liste mit Befehlen, die zu einer Reihe von Textdateien hinzugefügt werden sollen. Aber in den Dateien habe ich am Anfang gemeinsame Befehle.

Ich möchte einfach die Befehlsliste durch meine Befehlsliste ersetzen. Weitere Informationen finden Sie weiter unten.

Originaldatei

%apj=E:\Work\Informatin\Regarding work\DND.apj
%mem=4GB
%nprocshared=2
#p oyu opsd qtnv/1-a(x) kglgg=uioewr

Application 

0 1
 X                 -3.66480600    0.10278400   -0.00655500
 Y                 -4.11487100    1.45621700   -0.05226200
 Z                 -5.10300200    1.90042600    0.83864800

 1 2 1.0 13 1.0 23 1.0
 2 3 1.5 4 1.5
 3 5 1.5 6 1.0
 4 7 1.5 8 1.0

Zeichen, die ich ersetzen möchte

%apj=D:\Store\Data\Diff All\SMC.apj
%mem=800MB
%nprocshared=4
#p udf AMER hbvn/3-b(n) huggh=whea

Use

0 1
 X                 -3.66480600    0.10278400   -0.00655500
 Y                 -4.11487100    1.45621700   -0.05226200
 Z                 -5.10300200    1.90042600    0.83864800

Nach dem Ersetzen durch meine Befehlsliste möchte ich auch die Zeichen löschen, die nach einer Leerzeile, also den folgenden Zeilen, stehen und das Leerzeichen beibehalten.

1 2 1.0 13 1.0 23 1.0
2 3 1.5 4 1.5
3 5 1.5 6 1.0
4 7 1.5 8 1.0

Antwort1

Ich denke, das ist, was Sie brauchen:

sed '1,6d
7c%apj=D:\Store\Data\Diff All\SMC.apj\
%mem=800MB\
%nprocshared=4\
#p udf AMER hbvn/3-b(n) huggh=whea\
\
Use\

/^$/q' filename

Anstatt zeilenweise zu ersetzen, werden die ersten sechs Zeilen gelöscht ( 1,6d) und die siebte durch den neuen Header ersetzt, der mit dem cBefehl eingefügt wurde. Abschließend wird die Verarbeitung bei der nächsten leeren Zeile abgebrochen.

Wenn die erwartete Ausgabe zurückgegeben wird, fügen Sie eine Option hinzu, -ium den Ersetzungsvorgang direkt in der Datei durchzuführen (GNU sed, angepasst an die BSD-Version).

verwandte Informationen