2016-08-09 72 views
0

我想把-簽字後的數字放在我的矩陣中作爲第2列。我知道如何grep字符串,但不知道如何在文本字符串之後打印它。grep部分符號後跟字符串和洗牌列

在:

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

出來:

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

請出示你的努力 – fedorqui

+0

你說你想利用數量_before_了' '但是在例子中,你把數字放在'-'後面? –

+0

我的意思是.. – user2300940

回答

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

似乎是一個簡單的替換應該做的工作:

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

捕捉你感興趣的部分,並利用它們在更換。

或者,使用AWK:

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

從行的開始取出前導數字和-。當這成功時,sub返回true,所以執行該操作,打印第二個字段,然後是第一個字段。

0

使用正則表達式(+|-)作爲字段分隔符:

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

這裏是另一個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