Ich versuche, eine Zeile zu ersetzen ersetzt gegebene Kontexte auf zwei Seiten eines Split. Dies scheint viel einfacher, in Python zu tun, aber meine gesamte Pipeline ist in bash so würde ich gerne zu Tools wie sed, awk, grep-Stick usw.Zeile ersetzt gegebene Kontexte auf zwei Seiten eines Splits
Zum Beispiel:
split_0 = split('\t')[0]
split_1 = split('\t')[1]
if (a b c in split_0 AND w x y z in split_1):
split_1 = split_1.replace('w x y z', 'w x_y z')
I awk verwenden können zu tun Splits wie folgt aus:
awk -F '\t' '{print$1}'
Aber ich weiß nicht, wie diese, um beide Bedingungen zu erfüllen gleichzeitig auf beiden Seiten zu tun. Jede Hilfe würde sehr geschätzt werden.
Beispiel Eingabe/Ausgabe: Dies ist ein Beispiel und ich habe viele Regeln wie diese, aber im Grunde, was ich hier tun möchte, wird ein Beispiel gegeben, wo ich "ex" auf der linken Seite und "ih gz" auf der rechte Seite, ich möchte eine Ersetzung mit ih gz zu ih g_z machen.
input: exam ih g z ae m
output: exam ih g_z ae m
Ich konnte eine brutale tun sed wie:
sed 's/\(.*ex.*\t.*\)ih g z\(.*\)/\1ih g_z\2/g'
aber dies scheint hässlich, und ich bin sicher, dass es eine viel bessere Möglichkeit, dies zu tun ist. * Ich bin mir nicht ganz sicher, ob das "\ t" in sed funktioniert.
Können Sie uns einige Beispiel Eingabe/Ausgabe geben? –
@ Mr Llama, aktualisiert! – badner
@Ed Morton Ich denke, es könnte besser sein, wenn ich das Beispiel besser erklärte. Aber ich denke, die Frage ist ziemlich klar. Dies ist keine einfache Substitution, sondern eine Substitution auf der einen Seite unter gegebenen Bedingungen auf beiden Seiten. – badner