使用sed消除特定字符串
我感谢你在这个问题上的帮助。我喜欢从字符串中删除所有非特定模式的内容 例如,下面我想消除所有不是“5TTGTC”的东西 但正如这里所见,^5TTGTC是不对的。我使用了^(),^{},^[]的不同组合,但没有一个能提供我所需要的。感谢您的反馈使用sed消除特定字符串,sed,Sed,我感谢你在这个问题上的帮助。我喜欢从字符串中删除所有非特定模式的内容 例如,下面我想消除所有不是“5TTGTC”的东西 但正如这里所见,^5TTGTC是不对的。我使用了^(),^{},^[]的不同组合,但没有一个能提供我所需要的。感谢您的反馈 echo ".,..,...+5TTGTC...+5TTGCC.+5TTGTC,,.,.,,.,+5ttgtc,.,,.,.+5TTGTC.+5TTGTC,..+5TTGTC" | sed 's/^5TTGTC//g' 提前感谢如果需要区分大小写,可以
echo ".,..,...+5TTGTC...+5TTGCC.+5TTGTC,,.,.,,.,+5ttgtc,.,,.,.+5TTGTC.+5TTGTC,..+5TTGTC" | sed 's/^5TTGTC//g'
提前感谢如果需要区分大小写,可以使用以下命令:
echo“
上面的代码打印:
5TTGTC5TTGTC5TTGTC5TTGTC5TTGTC
上面使用的正则表达式用于捕获您感兴趣的内容。
我们匹配并捕获我们感兴趣的内容(5TTGCC
),我们匹配所有不是子字符串的内容,在本例中是字符,.A-Za-z+0-9
您可以检查正则表达式的行为
正如@EdMorton所指出的,该命令可以简化为:
echo“…..+5TTGTC…+5TTGCC.+5TTGTC,,,+5TTGTC,,,,+5TTGTC.+5TTGTC,…+5TTGTC”| sed-r's/(5TTGTC)|/\1/g'
你可以
为确保sed版本之间的兼容性,-r标志可以替换为-E标志。如果需要区分大小写,可以使用以下命令:
echo“
上面的代码打印:
5TTGTC5TTGTC5TTGTC5TTGTC5TTGTC
上面使用的正则表达式用于捕获您感兴趣的内容。
我们匹配并捕获我们感兴趣的内容(5TTGCC
),我们匹配所有不是子字符串的内容,在本例中是字符,.A-Za-z+0-9
您可以检查正则表达式的行为
正如@EdMorton所指出的,该命令可以简化为:
echo“…..+5TTGTC…+5TTGCC.+5TTGTC,,,+5TTGTC,,,,+5TTGTC.+5TTGTC,…+5TTGTC”| sed-r's/(5TTGTC)|/\1/g'
你可以
对于sed版本之间的兼容性,-r标志可以替换为-E标志。您没有明确说明您想要实现什么。
一种方法是使用grep
中的-o
选项
echo“…..+5TTGTC…+5TTGCC.+5TTGTC,,,+5TTGTC,,,,+5TTGTC.+5TTGTC,…+5TTGTC”| grep-o'5TTGTC'
输出:
5TTGTC
5TTGTC
5TTGTC
5TTGTC
5TTGTC
然后,您可以将5TTGTC
更改为一种模式,例如grep-o'[0-9]TT[AG]GTC'
您不清楚自己想要实现什么。
一种方法是使用grep
中的-o
选项
echo“…..+5TTGTC…+5TTGCC.+5TTGTC,,,+5TTGTC,,,,+5TTGTC.+5TTGTC,…+5TTGTC”| grep-o'5TTGTC'
输出:
5TTGTC
5TTGTC
5TTGTC
5TTGTC
5TTGTC
然后,您可以将5TTGTC
更改为一种模式,例如grep-o'[0-9]TT[AG]GTC'
使用任何sed:
$ echo ".,..,...+5TTGTC...+5TTGCC.+5TTGTC,,.,.,,.,+5ttgtc,.,,.,.+5TTGTC.+5TTGTC,..+5TTGTC" |
sed 's/#//g; s/5TTGTC/#/g; s/[^#]//g; s/#/5TTGTC/g'
5TTGTC5TTGTC5TTGTC5TTGTC5TTGTC
对于任何awk:
$ echo ".,..,...+5TTGTC...+5TTGCC.+5TTGTC,,.,.,,.,+5ttgtc,.,,.,.+5TTGTC.+5TTGTC,..+5TTGTC" |
awk -v str='5TTGTC' '{gsub(str,"\n"); gsub(/[^\n]/,""); gsub(/\n/,str)}1'
5TTGTC5TTGTC5TTGTC5TTGTC5TTGTC
对于任何sed:
$ echo ".,..,...+5TTGTC...+5TTGCC.+5TTGTC,,.,.,,.,+5ttgtc,.,,.,.+5TTGTC.+5TTGTC,..+5TTGTC" |
sed 's/#//g; s/5TTGTC/#/g; s/[^#]//g; s/#/5TTGTC/g'
5TTGTC5TTGTC5TTGTC5TTGTC5TTGTC
对于任何awk:
$ echo ".,..,...+5TTGTC...+5TTGCC.+5TTGTC,,.,.,,.,+5ttgtc,.,,.,.+5TTGTC.+5TTGTC,..+5TTGTC" |
awk -v str='5TTGTC' '{gsub(str,"\n"); gsub(/[^\n]/,""); gsub(/\n/,str)}1'
5TTGTC5TTGTC5TTGTC5TTGTC5TTGTC
在字符类([])之外,^
引用行的开头。“5ttgtc”也应该匹配吗?结果应该是什么样的?我知道了!这就是你如何从你的字符串中消除“5TTGTC”的任何东西(同时删除结果):<代码>回声“5TTGTC”< /代码>一个简单的否定字符集将不起作用。@ USER2495215见。@ USER 23 95215,如果下面的任何解决方案解决了你的问题,考虑接受它。请参见如何操作。在字符类([])之外,^
引用行的开头。“5ttgtc”也应该匹配吗?结果应该是什么样的?我知道了!这就是你如何从你的字符串中消除“5TTGTC”的任何东西(同时删除结果):<代码>回声“5TTGTC”< /代码>一个简单的否定字符集将不起作用。@ USER2495215见。@ USER 23 95215,如果下面的任何解决方案解决了你的问题,考虑接受它。看看怎么做。grep在这里也起作用是的,但是OP正在寻找一种sed替换模式。好吧,OP实际上并没有很清楚要解决的问题是什么sed
可能只是因为他们认为解决问题的方法,而不是他们真正想要使用的方法。我想消除所有不是“5TTGTC”的东西grep在这里也起作用是的,但OP正在寻找一种sed替代模式。好吧,OP实际上并没有明确说明要解决的问题是什么sed
可能只是因为他们认为这是解决问题的方法,而不是他们真正想要使用的方法。我想消除所有不是“5TTGTC”的东西,谢谢@Ed的评论。是的,匹配
更简单。很好,我会用这些信息编辑我的答案,谢谢。谢谢@Ed的评论。是的,匹配
更简单。好的,我会用这些信息编辑我的答案,谢谢。