【问题标题】:Match and replace a specific underscore to tab in shell匹配并替换特定下划线到 shell 中的制表符
【发布时间】:2017-12-08 10:53:23
【问题描述】:

我想替换文件中的特定下划线并将其替换为制表符。问题是我有很多下划线,当我尝试使用 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

任何帮助将不胜感激,

最好的。

【问题讨论】:

  • 如果 TRANSCRIPT 出现在每一行,则匹配 _TRANSCRIPT。如果不是,你需要找到一个不同的模式,你的所有行都会满足,比如第二个下划线或其他东西。还要显示您正在执行替换的实际代码,以便我们更好地理解上下文。
  • 是的,TRANSCRIPT 出现在每一行。感谢您的建议。

标签: regex string shell


【解决方案1】:

您可以使用sed。如果你的文字在test.txt,那么试试这个:

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

【讨论】:

  • @user18081990 干杯,很高兴为您提供帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-03-31
  • 1970-01-01
  • 1970-01-01
  • 2022-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多