2017-10-18 3 views
0

Ich habe versucht, das folgende zu tun.finde Muster in einer Spalte und ersetze es durch awk

Ich habe versucht, Spalte 1 zu setzen, wenn ich ein Muster gefunden, die „undefined“, zum Beispiel wäre:

ich meine datei.txt-Datei, die

192.168.1.1, Paul 

192.168.2.2, undefined 

Hier enthält es " undefined ", dann ersetzen Sie es durch die erste Spalte in der Zeile, wo es" undefiniert "ist. (192.168.2.2)

192.168.1.1, Paul 

192.168.2.2, 192.168.2.2 

Kann mir jemand helfen?

+0

Was haben Sie versucht? – batMan

Antwort

1

mit awk

$ awk -F", " '$2~/undefined/{ print $1 FS $1; next}1' file 
192.168.1.1, Paul 

192.168.2.2, 192.168.2.2 
+0

@ClaesWikner: Nun, ich möchte speziell $ 2 nicht die $ 0 überprüfen. – batMan

0

können Sie sed verwenden:

sed 's/\(.*\), undefined$/\1, \1/' file.txt 

oder

sed -r 's/(.*), undefined$/\1, \1/' file.txt 
0

Diese Linie arbeitet für Ihr Beispiel, ganz gleich, der Separator , oder ,(space)

awk -F, '1+sub(/undefined$/,$1)' file 
Verwandte Themen