我有一个文件,例如:
scaffold_10_1 YP_02917613.1 0.722 397 90 1 55021 53805 70 446 1.803E-180 566
scaffold_282_0 YP_004091438.1 0.799 317 102 1 55023 53395 66 442 2.282E-173 546
scaffold_15 YP_009676312.1 0.021 327 14 1 55320 52895
IDBA_scaffold_66230_1 YP_004091438.1 0.789 317 122 1 55023 53395 66 442 2.282E-173 506
scf7180005161552_2 YP_004091438.1 0.789 317 122 1 55023 53395 66 442 2.282E-173 506
这个想法只是删除第一列中所有名称的最后一个数字部分并得到:
scaffold_10 YP_02917613.1 0.722 397 90 1 55021 53805 70 446 1.803E-180 566
scaffold_282 YP_004091438.1 0.799 317 102 1 55023 53395 66 442 2.282E-173 546
scaffold_15 YP_009676312.1 0.021 327 14 1 55320 52895
IDBA_scaffold_66230 YP_004091438.1 0.789 317 122 1 55023 53395 66 442 2.282E-173 506
scf7180005161552 YP_004091438.1 0.789 317 122 1 55023 53395 66 442 2.282E-173 506
如您所见,有时第一个_number
之后没有_number_
scaffold_15
您有解决的办法吗?
感谢您的帮助。
对于布鲁诺里: 这是我得到的桌子:
scaffold_10 YP_02917613.1 0.722 397 90 1 55021 53805 70 446 1.803E-180 566
scaffold_282 YP_004091438.1 0.799 317 102 1 55023 53395 66 442 2.282E-173 546
scaffold YP_009676312.1 0.021 327 14 1 55320 52895
IDBAscaffold_66230_1 YP_004091438.1 0.789 317 122 1 55023 53395 66 442 2.282E-173 506
scf7180005161552 YP_004091438.1 0.789 317 122 1 55023 53395 66 442 2.282E-173 506
如您所见,scaffold_15
中的15已被删除,但我想保留它。
答案 0 :(得分:2)
尝试
cat file.csv | sed -e 's/\([A-Ba-b0-9_]*\)\(_[0-9]*\)\(.*\)/\1\3/' > file-without-number.csv
这是如何工作的?
sed
是嵌入式编辑器s/
运行sed将进行搜索和替换。语法以斜杠分隔:s/search_patter/replace_pattern
。\([A-Ba-b0-9_]*\)\(_[0-9]*\)\(.*\)
。它将把线分成三部分:
\([A-Ba-b0-9_]*\)
由字母,数字或_ _number
(与\(_[0-9]*\)
匹配)\(.*\)
)\1\3
将仅用部分1和3替换字符串,从而删除2 答案 1 :(得分:1)
您可以尝试使用此sed:
a
使用IDBA_scaffold_66230_1之类的数据,您可以尝试以下操作:
x