2017-05-03 18 views
0

即时通讯寻求删除它含有某些特定的词组(TCONS)删除它含有某些特定的词组

的所有字符串我有

TCONS_5424934 XLOC_2348324 
catgcatgcatgcatgcatcgt 

TCONS_33345 XLOC_2342323 
catgcatgcatgcatgcatcgt 

和文字,我想

XLOC_2348324 
catgcatgcatgcatgcatcgt 

XLOC_2342323 
catgcatgcatgcatgcatcgt 

我已尝试使用:

sed 's/\S*\(TCONS)\S*//g' 

但这只是删除了整条线。如何删除整个单词?由于

+0

运行您的sed命令给我一个错误(不匹配的括号)。 –

回答

0

好,GNU AWK(和mawk)为特定的数据:

$ awk -v RS="[ \n]" '!/TCONS/' file 
XLOC_2348324 
catgcatgcatgcatgcatcgt 

XLOC_2342323 
catgcatgcatgcatgcatcgt 

它使用的空间和换行符作为记录分隔符,基本上打破了一个纪录多条记录多话,但你的预期输出允许它。

1

了小修改,你的正则表达式修复该问题:

sed 's/\S*TCONS\S*\s*//g' file 

这消除了任何数量的非空格后面TCONS,随后任意数量的非空间,与任何尾随空格一起。

0

您也可以使用字符类表达相同的想法,可读性可能会更好或者可能不会更好,这更多的是品味的问题,例如,

sed 's/[^ \t]*TCONS[^ \t]*[ \t]*//g' file.txt 

基本上它只是寻找包含TCONS相隔任意字符串或者是spacetab(如果存在),并删除与任何数量的下列空格或制表符的沿着字符串。字符串和空白符号(\S\s)与Tom显示的一样非常干净,但字符类也是一个可行的选项,具体取决于对您最有意义的选项。

0

这样做:
sed 's/\b\s*\S*TCONS\S*\s*\b//g'
\ b在正则表达式匹配单词边界。 - 所以它只会删除TCONS的单词。它也删除所有空格字符前后的字符,其中子字符串是TCONS

相关问题