我有以下数据:
ID Affection rs3117294 rs2747453 rs2747454 rs2747457 rs3131888
D0024949 0 C_C A_G A_G A_A A_G
D0024302 0 A_C A_A A_G A_A A_A
D0023151 0 C_C A_G A_A A_A G_G
D0022042 0 A_C A_A G_G A_A A_A
D0021275 0 C_C A_G A_G A_A A_G
D0021163 0 A_A A_A G_G A_A A_A
D0020795 0 A_A A_A G_G A_C A_G
D0020691 0 A_A A_A G_G A_C A_G
D0019121 0 A_A A_A G_G C_C G_G
我想把下划线变成一个空格,这样C_C就变成了C C。
我怎样才能做到这一点?请使代码通用,以将其应用于我拥有的全部数据。
我从“不是我的代码”的人那里得到了以下信息 sed '1d' plink.raw | sed 's/_/ /g' > plinkv2.raw
,但它给了我空单元格,数据不完整。
答案1
GNU sed
:
sed -itmp 's/\(\w\)_\(\w\)/\1 \2/g' file
这将覆盖file
原始文件的备份并将其保存到file.tmp
.
POSIX sed
:
sed 's/\([[:alpha:]]\)_\([[:alpha:]]\)/\1 \2/g' file > file2
您必须重定向到另一个文件。file2
如果您需要,请复制到原件。
两者都使用“反向引用”的概念。模式中带有\(
.. 的文本周围可以用,等\)
替换。\1
\2
答案2
Please find the below command and output
它将整个文件中的 _ 替换为空格
awk '{gsub("_"," ",$0);print $0}' j.txt
D0024949 0 C C A G A G A A A G
D0024302 0 A C A A A G A A A A
D0023151 0 C C A G A A A A G G
D0022042 0 A C A A G G A A A A
D0021275 0 C C A G A G A A A G
D0021163 0 A A A A G G A A A A
D0020795 0 A A A A G G A C A G
D0020691 0 A A A A G G A C A G
D0019121 0 A A A A G G C C G G
如果希望仅替换第一个匹配项
sed "s/_/ /1" 输入文件
如需任何说明,请告知我们,请提供正确的输入和输出