我是bash脚本的新手。我想分割以下字符串,
chr14:81370042-81371098(+)
进入
chr14 81370042 81371098 +
要么
chr14:81370042-81371098(-)
进入
chr14 81370042 81371098 -
请告诉我如何使用一种适用于两种情况的命令来执行此操作。
我尝试了
cat a.tsv | tr -s ':' '\t' | sed "s/\t[0-9]+.*[0-9]+/[0-9]+\t[0-9]/g"
,它不起作用。谢谢。
最佳答案
此sed
可能有效:
sed -E 's/[^-+_[:alnum:]]+/ /g; s/ +$//; s/-(.)/ \1/g' <<< 'chr14:81370042-81371098(+)'
chr14 81370042 81371098 +
要不然:
sed -E 's/[^-+_[:alnum:]]+/ /g; s/ +$//; s/-(.)/ \1/g' <<< 'chr14:81370042-81371098(-)'
chr14 81370042 81371098 -
[^-+_[:alnum:]]+
匹配任何不是-
,+
,_
和字母数字的字符中的1个或多个。