我需要复制一整行文本,这是在使用linux命令行的模式之后出现的。
我有一个像这样的文本文件:
Query= lcl|TRINITY_DN38349_c2_g130_i1 len=264 path=13442:0-77 13443:78-113 13444:114-116 13445:117-137 13446:138-141 13447:142-181 13448:182-182 13449:183-190 13450:191-220 13451:221-237 13452:238-263 Length=612序列产生明显的排列: ref|XP_011662878.1|预测:在恶性脑肿瘤中被删除.71.28E-11 ref|XP_011660819.1|预测: 61.2 3结合蛋白样[.61.21-E-08 ref|XP_011662496.1|预测:在恶性肿瘤中缺失.60.5 2 e-07 /ref|XP_011662878.1|预测:在恶性脑肿瘤中缺失1种蛋白样蛋白--紫癜丝囊藻Length=903
我需要复制从Query= lcl|TRINITY和/ref|开始的全部行。问题是,我有几十个这样的文件,每个文件都有数百行文字,所以数字和文本跟随这些模式不断变化。我希望将它们重定向到一个文件中。
理想情况下,输出应该如下所示:
Query= lcl|TRINITY_DN38349_c2_g130_i1 /ref|XP_011662878.1|预测:在恶性脑肿瘤中缺失1种蛋白样蛋白
注意,兴趣线总是从/ref和Query=开始。我读过一些关于使用sed的文章,但我无法让它工作。
提前谢谢。
发布于 2016-05-10 19:17:34
对于find和sed,要获得所需输出示例中的截短行(从当前目录递归搜索):
find . -type f -exec sed -n 's/^\(Query= lcl|TRINITY[^ ]*\) .*/\1/p;s/^\(\/ref.*\) .*/\1/p' '{}' \; > output 若要保存以Query= lcl|TRINITY或/ref开头的整行,请执行以下操作:
find . -type f -exec sed -n '/^Query= lcl|TRINITY/p;/^\/ref.*/p' '{}' \; > output 匹配行保存到output文件中。
https://stackoverflow.com/questions/37146348
复制相似问题