
Mir liegen folgende Daten vor:
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
Ich möchte den Unterstrich durch ein Leerzeichen ersetzen, sodass aus C_C C C wird.
Wie kann ich das machen? Bitte machen Sie den Code allgemein, damit er auf alle meine Daten angewendet werden kann.
Ich habe von jemandem Folgendes bekommen „nicht mein Code“ sed '1d' plink.raw | sed 's/_/ /g' > plinkv2.raw
, aber es hat mir leere Zellen angezeigt, die Daten sind nicht vollständig.
Antwort1
GNU sed
:
sed -itmp 's/\(\w\)_\(\w\)/\1 \2/g' file
Dadurch wird das Original überschrieben file
und eine Sicherungskopie gespeichert file.tmp
.
POSIX sed
:
sed 's/\([[:alpha:]]\)_\([[:alpha:]]\)/\1 \2/g' file > file2
Sie müssen zu einer anderen Datei umleiten. file2
Wenn Sie das möchten, kopieren Sie es in das Original.
Beide verwenden das Konzept der „Rückverweise“. Wenn Sie Text im Muster mit \(
.. umgeben \)
, wird er bei der Ersetzung durch \1
, \2
, usw. verfügbar.
Antwort2
Please find the below command and output
es ersetzt _ durch Leerzeichen in der gesamten Datei
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
Wenn Sie möchten, dass nur das erste Match ersetzt wird
sed "s/_/ /1" Eingabedatei
Lassen Sie es uns wissen, wenn Sie weitere Informationen benötigen. Bitte geben Sie die richtigen Ein- und Ausgaben an.