2016-08-09 10 views
0

Ich möchte die Nummer nach dem - Zeichen nehmen und ist als Spalte 2 in meiner Matrix. Ich weiß, wie man die Zeichenfolge grep aber nicht wie man es nach der Textzeichenfolge druckt.Grep Teil der Zeichenfolge nach Symbol und Shuffle-Spalten

in:

1-967764  GGCTGGTCCGATGGTAGTGGGTTATCAGAACT 
3-425354  GCATTGGTGGTTCAGTGGTAGAATTCTCGCC 
4-376323  GGCTGGTCCGATGGTAGTGGGTTATCAGAAC 
5-221398  GGAAGAGCACACGTCTGAACTCCAGTCACGTGAAAATCTCGTATGCCGTCT 
6-180339  TCCCTGGTGGTCTAGTGGTTAGGATTCGGCGCT 

aus:

GGCTGGTCCGATGGTAGTGGGTTATCAGAACT 967764 
GCATTGGTGGTTCAGTGGTAGAATTCTCGCC 425354 
GGCTGGTCCGATGGTAGTGGGTTATCAGAAC 376323 
GGAAGAGCACACGTCTGAACTCCAGTCACGTGAAAATCTCGTATGCCGTCT 221398 
TCCCTGGTGGTCTAGTGGTTAGGATTCGGCGCT 180339 
+0

bitte Ihre Bemühungen zeigen – fedorqui

+0

Sie sagen, Sie die Nummer _before_ die 'nehmen wollen - Aber in dem Beispiel steckst du die Zahlen _nach dem '-'? –

+0

Ich meinte nach .. – user2300940

Antwort

2
awk -F'[[:space:]-]+' '{print $3,$2}' file 
0

Scheint wie eine einfache Substitution sollte die Arbeit machen:

sed -E 's/[0-9]+-([0-9]+)[[:space:]]*(.*)/\2 \1/' file 

Capture-Teilen Sie interessiert sind und sie zu nutzen im Ersatz.

Alternativ awk mit:

awk 'sub(/^[0-9]+-/, "") { print $2, $1 }' file 

die führenden Ziffern entfernen und - von Anfang der Zeile. Wenn dies erfolgreich ist, gibt sub den Wert true zurück, so dass die Aktion ausgeführt wird und das zweite Feld gefolgt von dem ersten Feld gedruckt wird.

0

Mit regex (+|-) als Feldtrennzeichen:

$ awk -F"(+|-)" '{print $3,$2}' file 
GGCTGGTCCGATGGTAGTGGGTTATCAGAACT 967764 
GCATTGGTGGTTCAGTGGTAGAATTCTCGCC 425354 
GGCTGGTCCGATGGTAGTGGGTTATCAGAAC 376323 
GGAAGAGCACACGTCTGAACTCCAGTCACGTGAAAATCTCGTATGCCGTCT 221398 
TCCCTGGTGGTCTAGTGGTTAGGATTCGGCGCT 180339 
0

hier ist ein weiterer awk

$ awk 'split($1,a,"-") {print $2,a[2]}' file 
0
awk '{sub(/.-/,"");print $2,$1}' file 
GGCTGGTCCGATGGTAGTGGGTTATCAGAACT 967764 
GCATTGGTGGTTCAGTGGTAGAATTCTCGCC 425354 
GGCTGGTCCGATGGTAGTGGGTTATCAGAAC 376323 
GGAAGAGCACACGTCTGAACTCCAGTCACGTGAAAATCTCGTATGCCGTCT 221398 
TCCCTGGTGGTCTAGTGGTTAGGATTCGGCGCT 180339 
Verwandte Themen