Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
sed:删除匹配的第n个字符后的字符_Sed - Fatal编程技术网

sed:删除匹配的第n个字符后的字符

sed:删除匹配的第n个字符后的字符,sed,Sed,我想简化我的数据库,删除不需要的信息,但找不到方法做到这一点。这是我的文件示例,在第6列中,我想删除BPS前后的所有字符。必须保留BPS前后链接的编号。表格示例 bactNOG ENOG410884P 2 2 M 379066.GAU_3228,272560.BPSS2320 bactNOG ENOG4108K54 20 20 S 240016.VspiD_010100004855,530564.Psta_128

我想简化我的数据库,删除不需要的信息,但找不到方法做到这一点。这是我的文件示例,在第6列中,我想删除BPS前后的所有字符。必须保留BPS前后链接的编号。表格示例

bactNOG ENOG410884P     2       2       M       379066.GAU_3228,272560.BPSS2320
bactNOG ENOG4108K54     20      20      S       240016.VspiD_010100004855,530564.Psta_1282,349741.Amuc_1603,272560.BPSS1860,761193.Runsl_3432,320771.Cflav_PD6017 
bactNOG ENOG4108PSW     33      31      E       1048834.TC41_0741,749927.AMED_4235,272560.BPSS0750,479433.Caci_2010,521098.Aaci_0763,220664.PFL_3212,208964.PA1485
bactNOG ENOG4108Q8E     10      9       G       272568.Gdia_0844,349163.Acry_2602,366394.Smed_0916,266834.SMc02021,266835.mll7376,457421.CBFG_05672,272560.BPSS2071
我想把桌子简化成这个

bactNOG ENOG410884P     2       2       M       272560.BPSS2320
bactNOG ENOG4108K54     20      20      S       272560.BPSS1860
bactNOG ENOG4108PSW     33      31      E       272560.BPSS0750
bactNOG ENOG4108Q8E     10      9       G       272560.BPSS2071
我知道sed中的一些命令,但这些命令无法帮助我。我试过这样的命令

sed 's/BPSS[0-9][0-9][0-9][0-9].*/BPSS[0-9][0-9][0-9][0-9]/g' file
但BPS后的数字发生了变化。我想保留(BPSS)编号

提前谢谢


Kamal

您是否尝试过实现这一目标?As SO不是一个免费的编码平台。我们在这里是为了帮助那些先尝试,然后提出要求的人。请为我们展示您尝试过的内容的片段或代码。我已编辑了我的问题,添加了我尝试过但未能生成所需输出的sed命令。谢谢,该命令非常有效。从中学习新事物,但您是否介意解释[^[:space:][]*]的作用。除此之外,其余的我都知道了part@kamalghaz太好了。谢谢你@Tiw,我会调查的
$ sed 's/[^[:space:]]*,\([0-9]*\.BPSS[0-9]*\).*/\1/' file
bactNOG ENOG410884P     2       2       M       272560.BPSS2320
bactNOG ENOG4108K54     20      20      S       272560.BPSS1860
bactNOG ENOG4108PSW     33      31      E       272560.BPSS0750
bactNOG ENOG4108Q8E     10      9       G       272560.BPSS2071