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

标签 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" 但它完全删除了行尾

有什么想法吗?

最佳答案

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

关于regex - 删除两个特殊字符之间的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21987759/

相关文章:

javascript - 如何在下面的示例中使用正则表达式?

linux - pscp中的“ignoring potentially dangerous server-supplied filename”

linux - 无法从 AWS CloudFormation 脚本更新 .bashrc 文件

bash - 选择文件夹中的第 n 个文件(使用 sed)?

bash - 从 csv 文件中删除一行 bash, sed, bash

regex - 什么是用于删除换行符的跨平台正则表达式?

ruby - 如果它是标点符号,我怎么能从字符串中删除最后一个字符,在 ruby​​ 中?

python - 确定字符串是否不能是有效正则表达式的简单方法

windows - 进程开销是否使 Linux 成为比 Windows 更好的 Node.js 主机?

regex - 如何根据数据的存在替换一行中的某些字符...?