Ich habe einen Datenrahmen mit mehreren Spalten und Zeilen, wobei eine Spalte verschiedene Zeichenketten enthält, wobei jede Zeichenkette aus einer anderen Anzahl besteht unterstreicht. Ich möchte jeden String in zwei Hälften teilen, abhängig von der Anzahl der Vorkommen.BASH - Teilungszeichenfolge bei besonderem Vorkommen von Zeichen (Unterstrich), abhängig von der Gesamtzahl der Unterstriche in der Zeichenkette
Beispiel:
ID_1 ID_2 haplotypeID ...
A_B_A_B A_B_A_B hap.1.1 ...
A_B_C_A_B_C A_B_C_A_B_C hap.1.2 ...
A_B_C_D_A_B_C_D A_B_C_D_A_B_C_D hap.2.1 ...
A_B_C_D_E_A_B_C_D_E A_B_C_D_E_A_B_C_D_E hap.2.1 ...
... ... ... ...
Der Ausgang wäre:
ID_1 ID_2 haplotypeID ...
A_B A_B hap.1.1 ...
A_B_C A_B_C hap.1.2 ...
A_B_C_D A_B_C_D hap.2.1 ...
A_B_C_D_E A_B_C_D_E hap.2.1 ...
... ... ... ...
Ich hoffe jemand kann mir helfen. Vielen Dank im Voraus!
Also, wird es immer von der Form 'somestring_thatamestring' sein? Wird es in der Eingabe Instanzen von "A_B_C_D" oder nur "A_B_A_B" geben? – anishsane
Die Eingabe wird immer symmetrisch sein, was bedeutet, dass in einer Zeichenfolge die Instanz zweimal auftritt, getrennt durch einen Unterstrich in der Form Something_thatamestring. A_B_A_B erscheint, aber nicht A_B_C_D. – Svalf
Versuchen Sie 'sed -r 's/(^ |) ([^] *) _ \ 2/\ 1 \ 2/g' input.txt | Spalte -t' – anishsane