如果列包含数字,请插入文本

时间:2018-04-25 10:57:45

标签: linux unix awk sed replace

我有一个tab-delim文件,看起来像这样

10      7.98862e-05
10      cellular organisms; Bacteria; Proteobacteria; Betaproteobacteria; Burkholderiales; Burkholderiaceae; Ralstonia; Ralstonia solanacearum  0.000159772
10      0.000207704
10      cellular organisms; Bacteria; Terrabacteria group; Firmicutes; Clostridia; Clostridiales; Clostridiaceae; Clostridium; Clostridium sp. C105KSO15        0.00092668
10      9.58635e-05
10      0.000191727
10      0.000127818
10      cellular organisms; Bacteria; Terrabacteria group; Firmicutes; Clostridia; Clostridiales; Peptostreptococcaceae; Clostridioides; Clostridioides difficile       0.0                                                               0142198
10      cellular organisms; Bacteria; Terrabacteria group; Firmicutes; Clostridia; Clostridiales; Clostridiaceae; Clostridium; Clostridium sp. C105KSO15        0.00268418

它应该是三列,但是第二列(细菌分类学)缺少一些行。对于这些行,我想将数字移动到第三列并插入一些文本(例如Unclassified)。

我一直在尝试修改我在网上发现的一些命令,以便在第二列中的任何值之前插入Unclassified\t,该值以数字开头但无法使其正常工作。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:-1)

试试这行:

awk -F'\t' -v OFS="\t" 'NF==2{$3=$2;$2="Unclassified"}7' file

答案 1 :(得分:-1)

你也可以试试这个sed

sed -E 's/([^\t]*\t)([0-9]\.[0-9].*$)/\1Unclassified\t\2/' infile