【问题标题】:Prefix each header with X retaining the original structure用 X 为每个标题添加前缀,保留原始结构
【发布时间】:2020-05-07 15:47:11
【问题描述】:

我在编辑制表符分隔矩阵时遇到了一些困难。 我不能给你看原始文件,因为它有 445 个字段和 318 行。 原文件是这样的:

OTUId            198  341A  341B  341C  201  200  205
OTU103080889      0   600    0    200    0    0    2 
OTU104847416      0   450    0    1870   0    0    0
....

第一个问题是当我在 R 中加载时,我遇到了将数字作为标题的问题,因此,为了不丢失所有已完成的分析,我使用以下示例更改了上面示例中的标题:

awk 'NR==1{ for(i=1;i<=445;i++) gsub ("^", "X", $i); }1' my_otu_table.txt >> teste.txt"

它可以在每个字段前面添加 X,但我丢失了制表符分隔的原始格式。

我一直在寻找我上面的 awk 句子的最后一个补充,但我很难修复它。

你能帮帮我吗? 谢谢 抱歉,我不知道如何格式化这篇文章中的表格

【问题讨论】:

  • 请将该示例输入的所需输出(无描述)添加到您的问题(无评论)。
  • 有关信息,您会丢失选项卡格式,因为更新任何字段都会使 $0 无效,在引用时使用输出字段分隔符 (OFS) 重新构建。修复便携式 awk 命令的一种方法是awk 'NR == 1 { gsub(/[^[:space:]]+/, "X&amp;") } 1' input_file

标签: for-loop awk header delimiter gsub


【解决方案1】:

我认为使用 GNU sed 更容易做到这一点:

$ sed '1s/\</X/g' file
XOTUId            X198  X341A  X341B  X341C  X201  X200  X205
OTU103080889      0   600    0    200    0    0    2
OTU104847416      0   450    0    1870   0    0    0

【讨论】:

  • OP 要求为每个列名添加前缀,但顺便提一下,GNU sed 也接受 sed '1s/\&lt;/X/2g' file 从第二列开始添加前缀。
猜你喜欢
  • 2021-10-20
  • 1970-01-01
  • 1970-01-01
  • 2023-02-24
  • 1970-01-01
  • 2016-03-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多