我有一个如下所示的文件:
GENERSID1RSID2VALUE
ENSG00000242220rs2826052rs28260520.20961262553802
ENSG00000242220rs2826052rs798932040.00583452893352463
ENSG00000242220rs2826052rs117256228-0.003012912482066
我想在每个值之间添加空格,因此它应该如下所示:
GENE RSID1 RSID2 VALUE
ENSG00000242220 rs2826052 rs2826052 0.20961262553802
ENSG00000242220 rs2826052 rs79893204 0.00583452893352463
ENSG00000242220 rs2826052 rs117256228 -0.003012912482066
我在 sed 中使用了这个命令,我能够做到这一点:
sed "s/rs/ &/g" Model_training_chr21_covariances.txt > Model_training_chr21_covariances1.txt
sed "s/-0/ &/" Model_training_chr21_covariances1.txt > Model_training_chr21_covariances2.txt
ENSG00000242220 rs2826052 rs28260520.20961262553802
ENSG00000242220 rs2826052 rs798932040.00583452893352463
ENSG00000242220 rs2826052 rs117256228 -0.003012912482066
基本上负数-0.003现在已经分开了,但0.209和0.0058没有分开,我只能在-0之前添加空格。值而不是 0。?有什么办法可以解决这个问题吗?谢谢
您可以将所有正则表达式合并到一个 sed 命令中以节省一些处理时间。
假设:
rs
rs
不会出现在数据中的其他任何位置(除了第二/第三字段的前两个字符)-
)+开头0.
调整和组合 OP 的
sed
脚本:对于标题行,有一些假设:
RS
RS
不会出现在数据中的其他任何位置(除了第二/第三字段的前两个字符)VAL
VAL
不会出现在数据中的其他任何位置(除了第四个字段的前三个字符)添加一些额外的代码来寻址标头:
这两者都会生成:
在以下位置实施相同的方法
awk
: