删除两个特殊字符之间的字符

时间:2014-02-24 12:27:15

标签: regex linux sed awk

我正在尝试删除两个特殊字符中的字符串。

cluster10619: negl|c55742_graph_c0_seq1:99:213:3:+ phar|comp52619_c0_seq1 pres|comp29354_c0_seq1 rugi|comp46514_c0_seq1

例如,我想要删除之间的所有内容:和:+所以它将是

cluster10619: negl|c55742_graph_c0_seq1 phar|comp52619_c0_seq1 pres|comp29354_c0_seq1 rugi|comp46514_c0_seq1

不改变线的其余部分(有时它们很大!)

我试过了:sed "s/:.*:+//g"但它完全删除了行的结尾

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

awk -F'|' -v OFS="|" '{sub(/:.*:\+/,"",$2)}7' file

测试你的输入:

kent$ echo "cluster10619: negl|c55742_graph_c0_seq1:99:213:3:+ phar|comp52619_c0_seq1 pres|comp29354_c0_seq1 rugi|comp46514_c0_seq1"|awk -F'|' -v OFS="|" '{sub(/:.*:\+/,"",$2)}7'
cluster10619: negl|c55742_graph_c0_seq1 phar|comp52619_c0_seq1 pres|comp29354_c0_seq1 rugi|comp46514_c0_seq1

答案 1 :(得分:0)

您可以尝试此sed

sed "s/:[0-9:]*:+//g" yourfile.txt