Grep符号和shuffle列后的字符串的一部分

时间:2016-08-09 08:56:47

标签: awk sed

我想在1-967764 GGCTGGTCCGATGGTAGTGGGTTATCAGAACT 3-425354 GCATTGGTGGTTCAGTGGTAGAATTCTCGCC 4-376323 GGCTGGTCCGATGGTAGTGGGTTATCAGAAC 5-221398 GGAAGAGCACACGTCTGAACTCCAGTCACGTGAAAATCTCGTATGCCGTCT 6-180339 TCCCTGGTGGTCTAGTGGTTAGGATTCGGCGCT 符号后面加上数字,并在我的矩阵中作为第2列。我知道如何grep字符串而不是如何在文本字符串后打印它。

在:

GGCTGGTCCGATGGTAGTGGGTTATCAGAACT 967764
GCATTGGTGGTTCAGTGGTAGAATTCTCGCC 425354
GGCTGGTCCGATGGTAGTGGGTTATCAGAAC 376323
GGAAGAGCACACGTCTGAACTCCAGTCACGTGAAAATCTCGTATGCCGTCT 221398
TCCCTGGTGGTCTAGTGGTTAGGATTCGGCGCT 180339

出:

git status

5 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

看起来像一个简单的替代应该做的工作:

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

捕获您感兴趣的部分并在替换中使用它们。

或者,使用awk:

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

从行首开始删除前导数字和-。如果成功,sub将返回true,因此执行操作,打印第二个字段,然后是第一个字段。

答案 2 :(得分:0)

使用正则表达式( +|-)作为字段分隔符:

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

答案 3 :(得分:0)

这是另一个awk

$ awk 'split($1,a,"-") {print $2,a[2]}' file

答案 4 :(得分:0)

{{1}}