2016-07-25 20 views
0

Ich habe eine Datei mit Genen im folgenden Format. Ich möchte die Datei verarbeiten und jede Zeile ein Gen anzeigen lassen (die mehreren Gene in einer Zeile in mehrere Zeilen trennen).set " x3b" als Trennzeichen

C10orf32 
C10orf32,C10orf32-ASMT 
C19orf33\x3bYIF1B 
C19orf73,LIN7B 
C19orf73,PPFIA3\x3bLIN7B 

habe ich den folgenden Befehl ein und setzen will "" und "\ X3B" als Trennzeichen, aber "\ X3B" ist immer noch in der Ausgabedatei, wie unten gezeigt

awk 'BEGIN {FS=",|\x3b";} {for (i=1;i<=NF;i++) {print $i}}' file.txt 

Ausgang:

C10orf32 
C10orf32 
C10orf32-ASMT 
C19orf33\x3bYIF1B 
C19orf73 
LIN7B 
C19orf73 
PPFIA3\x3bLIN7B 

aber ich will

C10orf32 
C10orf32 
C10orf32-ASMT 
C19orf33 
YIF1B 
C19orf73 
LIN7B 
C19orf73 
PPFIA3 
LIN7B 

Was mache ich falsch?

+0

'\ x3b' ist ein Escape-Code; Awk behandelt es als das Zeichen [Semikolon] (http://www.fileformat.info/info/unicode/char/3b/index.htm). Wenn Sie den umgekehrten Schrägstrich des Literals, Buchstabe x, Ziffer 3, Buchstabe b wollen, müssen Sie den umgekehrten Schrägstrich verdoppeln, um ihn zu umgehen. – tripleee

+0

Danke. Ich verdoppelte das \\ mit dem folgenden Befehl, aber es funktioniert nicht awk 'BEGIN {FS = ", | \\ x3b";} {für (i = 1; i <= NF; i ++) {print $ i}} 'file.txt –

+0

Ich habe auch das gawk versucht, aber es funktioniert auch nicht. –

Antwort

0
awk 'BEGIN {FS=",|\\\\x3b"} {for (i=1;i<=NF;i++) {print $i}}' file.txt 

Das funktioniert. Ich weiß nicht genau warum, obwohl nur einige Male der Backslash doppelt so gut funktioniert ...

+0

Das funktioniert. Vielen Dank –