2017-02-27 4 views
0

Ich habe eine Datei mit vielen Spalten und Zeilen und ich möchte die Zeilen entfernen, die mehr als ein Zeichen in der vierten und fünften Spalte sind.awk druck spezifische Anzahl von Zeichen in Spalten

Eingang:

--- 22:16050115:G:A 16050115 GGG A 
--- 22:16050213:C:T 16050213 C T 
--- 22:16050319:C:T 16050319 C T 
--- 22:16050527:C:A 16050527 C AAA 
--- 22:16050568:C:A 16050568 CC A 
--- 22:16050607:G:A 16050607 G A 
--- 22:16050627:G:T 16050627 G TGG 
--- 22:16050646:G:T 16050646 G T 
--- 22:16050655:G:A 16050655 GTAA A 
... 

gewünschte Ausgabe:

--- 22:16050213:C:T 16050213 C T 
--- 22:16050319:C:T 16050319 C T 
--- 22:16050607:G:A 16050607 G A 
--- 22:16050646:G:T 16050646 G T 
... 

Thank you very much.

Antwort

4
awk 'length($4)==1 && length($5)==1' inputfile 
--- 22:16050213:C:T 16050213 C T 
--- 22:16050319:C:T 16050319 C T 
--- 22:16050607:G:A 16050607 G A 
--- 22:16050646:G:T 16050646 G T 

Dadurch wird die Länge von $4 und $5 mit length() Funktion von awk überprüfen. Dies verwendet den Vergleichsoperator ==. Sie können es zu <, >, <= usw. ändern. So wird der obige Befehl die Zeilen drucken, die nur ein Zeichen in ihrer 4. und 5. Spalte haben.

+1

danke, es funktioniert gut. –

+2

Schön. Sie können den Teil {print $ 0} auch vermeiden. awk 'Länge ($ 4) == 1 && Länge ($ 5) == 1' Datei. –

+0

danke, implementiert. –

Verwandte Themen