如何在linux中交换两个特定的字符



我试图在一个复杂的文本文件中交换两个字符,但它不起作用。它看起来像这样:

cat 1
_**A** # 2 # 118 # -1 # ID=**B**;partial=10;start_type=GTG
GTGTCAAAAGGCAAGTTAACCTTCGCAATCAACTTCGCATTGGTAGGTGCGTATCTGGGCGCCATTAAGA
_**C** # 100 # 204 # -1 # ID=**D**;partial=01;start_type=Edge
GAGGAGATAAAGAAATTACAGGAAACCGATGAAGAAATAGGCAAAAACGAGCATATTGTTGCCTATCTTC
GTGCCGTTAGGGAAATGTGTCAAAAGGCAAGTTAA 

我想像这样交换A和B,C和D:

_**B** # 2 # 118 # -1 # ID=**A**;partial=10;start_type=GTG
GTGTCAAAAGGCAAGTTAACCTTCGCAATCAACTTCGCATTGGTAGGTGCGTATCTGGGCGCCATTAAGA
_**D** # 100 # 204 # -1 # ID=**C**;partial=01;start_type=Edge
GAGGAGATAAAGAAATTACAGGAAACCGATGAAGAAATAGGCAAAAACGAGCATATTGTTGCCTATCTTC
GTGCCGTTAGGGAAATGTGTCAAAAGGCAAGTTAA 

我意识到这是一个乏味的问题。。。但我看不出解决方案:(

对于上面的示例,您可以执行以下操作:

cat <file> | sed -e 's/**B**/**A**/'  
-e 's/**A**/**B**/' 
-e 's/**D**/**C**/' 
-e 's/**C**/**D**/' 

其中包含原始代码。

请注意,上面的代码片段仅适用于每行仅**A****B**一次的情况。对于更复杂的示例,您需要查看sed命令的手册

相关内容

  • 没有找到相关文章

最新更新