
以下のデータがあります:
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" 入力ファイル
ご不明な点がございましたら、適切な入力と出力をご提供ください。