Regex 将特定下划线匹配并替换为shell中的选项卡

Regex 将特定下划线匹配并替换为shell中的选项卡,regex,string,shell,Regex,String,Shell,我要替换文件中的特定下划线,并将其替换为选项卡。问题是我有很多下划线,当我尝试使用tr时,所有的下划线都被制表符替换。以下是文件格式的示例: Arabidopsis_thaliana_TRANSCRIPT_NM1000_c5_g4_i1 Arabidopsis_thaliana_TRANSCRIPT_NM2530_c1_g1_i1 Arabidopsis_lyrata_TRANSCRIPT_NM10000_c2_g2_i2 Oriza_sativa_TRANSCRIPT_NM43000_c1_g

我要替换文件中的特定下划线,并将其替换为选项卡。问题是我有很多下划线,当我尝试使用tr时,所有的下划线都被制表符替换。以下是文件格式的示例:

Arabidopsis_thaliana_TRANSCRIPT_NM1000_c5_g4_i1
Arabidopsis_thaliana_TRANSCRIPT_NM2530_c1_g1_i1
Arabidopsis_lyrata_TRANSCRIPT_NM10000_c2_g2_i2
Oriza_sativa_TRANSCRIPT_NM43000_c1_g2_i4
Oriza_sativa_TRANSCRIPT_NM31000_c2_g1_i1
我想要的输出如下:

Arabidopsis_thaliana    TRANSCRIPT_NM1000_c5_g4_i1
Arabidopsis_thaliana    TRANSCRIPT_NM2530_c1_g1_i1
Arabidopsis_lyrata     TRANSCRIPT_NM10000_c2_g2_i2
Oriza_sativa     TRANSCRIPT_NM43000_c1_g2_i4
Oriza_sativa     TRANSCRIPT_NM31000_c2_g1_i1
任何帮助都将不胜感激


最好的

您可以使用
sed
。如果文本位于
test.txt
,请尝试以下操作:

$ sed -i.bak "s/_TRANSCRIPT/$(echo '\t')TRANSCRIPT/g" test.txt

如果每一行都出现了抄本,则与
\u抄本
匹配。如果没有,你需要找到一个不同的模式,你所有的行都会满足,比如第二个下划线或其他什么。同时显示您正在替换的实际代码,以便我们更好地理解上下文。是的,每一行都会出现文本。谢谢你的建议。@user18081990干杯,很乐意帮忙。