使用sed消除特定字符串

使用sed消除特定字符串,sed,Sed,我感谢你在这个问题上的帮助。我喜欢从字符串中删除所有非特定模式的内容 例如,下面我想消除所有不是“5TTGTC”的东西 但正如这里所见,^5TTGTC是不对的。我使用了^(),^{},^[]的不同组合,但没有一个能提供我所需要的。感谢您的反馈 echo ".,..,...+5TTGTC...+5TTGCC.+5TTGTC,,.,.,,.,+5ttgtc,.,,.,.+5TTGTC.+5TTGTC,..+5TTGTC" | sed 's/^5TTGTC//g' 提前感谢如果需要区分大小写,可以

我感谢你在这个问题上的帮助。我喜欢从字符串中删除所有非特定模式的内容

例如,下面我想消除所有不是“5TTGTC”的东西

但正如这里所见,^5TTGTC是不对的。我使用了^(),^{},^[]的不同组合,但没有一个能提供我所需要的。感谢您的反馈

 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的评论。是的,匹配
更简单。好的,我会用这些信息编辑我的答案,谢谢。