Ich möchte ein Spaltenname-Wert-Paar aus einer INSERT-Anweisung entfernen und in eine andere INSERT-Anweisung verschieben. Ich habe ungefähr einhundert verschiedene Dateien, die diese Art von Format haben (obwohl das Format von Datei zu Datei leicht variieren kann, zum Beispiel haben einige Benutzer die gesamte INSERT-Anweisung in eine Zeile geschrieben).Bash Ausschneiden und Einfügen SQL-Insert-Anweisung
INPUT
INSERT INTO table1 (
col1,
col2
)
VALUES (
foo,
bar
);
INSERT INTO table2 (
col3,
col4_move_this_one,
col5
)
VALUES (
john,
doe_move_this_value,
doe
);
OUTPUT
INSERT INTO table1 (
col1,
col4_move_this_one,
col2
)
VALUES (
foo,
doe_move_this_value,
bar
);
INSERT INTO table2 (
col3,
col5
)
VALUES (
john,
doe
);
Im Allgemeinen mit dem obigen Format, das ich dachte ich sed und Katze in einem Skript verwenden könnte Zeilennummern jeder Zeile zu finden bewegt und dann werden bewege es, so etwas.
for file in *; do
line_number=$(cat -n ${file} | sed some_statement | awk to_get_line_number)
# etc...
done
... aber vielleicht kann euch eine clevere Art und Weise empfehlen, die auch auf einer Linie Aussage ist, wenn die INSERT funktionieren würde.
Bitte geben Sie eine Datenprobe und das Ergebnis, das Sie benötigen .. – scaisEdge
@scaisEdge Edited die Post mit Eingangs- und Ausgangstestfall. – dood