繁体   English   中英

sed和顺序模式

[英]Sed and order patterns

我有一个包含目标行的文件(以“>”开头)...

>lcl|1:c127-20 Ricardo3 phone

我想得到:

>Ricardo3:127-20

我的步骤:(1)用''更改':',(2)删除字符串'c',(3)获得第一个和第二个匹配项,并以不同的顺序打印它们,并以':'分隔为'\\ 2 [:] \\ 1' 。

这是我的代码:

sed -e '/^>/s/:/ /' -e '/^>/s/c//' -e '/^>/s/.*\s\([A-Z_0-9a-z]*\)\s.*\[A-Z_0-9a-z].*/\2[:]\1/' file

但是我仍然只能得到:

>ll|1 127-20 Ricardo3 phone

我在最后一个sed结构中使用regex花费了很多时间。 任何帮助都将非常有用。

谢谢

$ sed -r 's/.*:c(\S*)\s+(\S*)\s.*/>\2:\1/' <<<">lcl|1:c127-20 Ricardo3 phone"
>Ricardo3:127-20 

上面的行适用于给定的输入。 (gnu sed)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM