如何在文件的第n列和第一行中添加字符串?

布山达勒姆

我有一个制表符分隔的file样子:

$ cat file
GCF_000014165.1_ASM1416v1.dist_nbr_anntn        WP_011558474.1  1155234 1156286 polyketide      synthase [Mycobacterium]
GCF_000014165.1_ASM1416v1.dist_nbr_anntn        WP_011558475.1  1156298 1156807 12      carboxyl methyltransferase [Mycobacterium]
GCF_000014165.1_ASM1416v1.dist_nbr_anntn        WP_011558476.1  1156804 1157820 -3      oxidoreductase [Mycobacterium]

其中11552341156286115629811568071156804和 1157820后面是标签(即,有在文件中没有空格,除了在第6个(最后一个)列)。我想0在第五列添加一个选项卡,并将第一行第六列末尾的选项卡替换为一个空格。输出如下:

GCF_000014165.1_ASM1416v1.dist_nbr_anntn        WP_011558474.1  1155234 1156286 0       polyketide synthase [Mycobacterium]
GCF_000014165.1_ASM1416v1.dist_nbr_anntn        WP_011558475.1  1156298 1156807 12      carboxyl methyltransferase [Mycobacterium]
GCF_000014165.1_ASM1416v1.dist_nbr_anntn        WP_011558476.1  1156804 1157820 -3      oxidoreductase [Mycobacterium]

如何使用awk或sed进行操作?

G-Man说“恢复莫妮卡”

您的答案基本上可以满足您的要求,但可以改进。

  • 您要在合理范围内尽量减少(简单)命令的数量和管道的数量。如果拥有的数量过多,可能会导致效率低下。您不会在五行或十行的文件中注意到它,但是,当您处理一百万行的文件时,它会有所作为。

    您不需要运行两个sed命令(一个通过管道传递到另一个)。你可以做

    sed的-e ' (第一小号命令) ' -e ' (第二小号命令) '
    或者
    sed的' (第一小号命令);  (第二小号命令) '

  • 从示例输出中可以看出,您希望该选项卡仅在第一行变成空格,因此您的s/\t/ /命令也应加上前缀1
  • s/…/…/6g未定义行为由于您只希望s/\t/ /完成一次(在第6个标签上),因此您应该只说一次s/\t/ /6(不带g)。

所以你的命令可能是

sed'1s / \ t / \ t0 \ t / 4; 1s / \ t / / 6'文件

大括号可让您将要完成的命令组合在一起。所以你也可以说

sed'1 {s / \ t / \ t0 \ t / 4; s / \ t / / 6}”文件

awk

您可以在awk中执行以下操作:

awk -F'\ t'-v OFS ='\ t''NR == 1 {$ 6 = $ 5“” $ 6; $ 5 =“ 0”} 
                {打印} 
    '文件

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何从字符串文件中获取第一行和第 10 行

如何在txt文件的第一行中的每一行中写入字符串

如何在新列的数据帧的每一行中添加字符串和特殊字符?

在Bash中,如何在文件的每一行之后添加字符串?

如何在连续写入的日志文件的每一行中添加日期字符串

如何在连续写入的日志文件的每一行中添加日期字符串

用于将字符串追加到csv文件第6列中每一行的第一行的Shell脚本

如何从字符串中为文件中的每一行选择第n个字符?

如何在前 2 列上添加字符串并在第 3 列上为 pyqt tablewidget 中的每一行字符串添加按钮?

如何使用sed替换文件中每一行的字符串前的第n个空格

如何在文本文件unix中显示包含特定字符串的第一行?

如何在python中的字符串的每个第n个分隔符添加一个新行?

如何使用grep仅在文件的第一行中搜索特定字符串?

如何在文件的每一行开头添加字符串?

如何在单个字符串变量的第一行和第二行之间添加空格/空行?

如何使用 Bash 将字符串添加到文件中的每一行

如何在iOS中向UITableView的最后一行添加带字符串的一行?

如何在一行中第一个字符后匹配字符串

如何在Groovy中的字符串匹配之前在文件中插入一行

如何在linux文件中的一行编辑字符串

如何在一行中拆分和修剪字符串

如何在同一行中打印字符串和整数?

如何在文件中搜索字符串并将找到的行和下一行复制到另一个文件?

字符串在第n个空格中在表中拆分一行

读取文件的第一行并将其与外壳文件中的字符串进行比较

如何在PHP中跳过文件的第一行和最后一行

使用Bash,如何打印.txt文件的第一行中包含特定字符串的整行?

从txt文件中读取字符串,然后在c ++中的第一行停止

在一行的第n次出现中查找字符串或子字符串