2017-03-20 4 views
-2

Ich habe zwei Dateien mit folgendem Format:awk, sed, Shell: Wie Daten verwenden, von einer Datei in einer anderen

File1.txt

1 
apple 1.056 
ref 15 

Datei2.txt

2 
apple unknown 
ref unknown1 

Wie kann ich den Wert für Apple (1.056) von File1.txt anstelle von dem, was für File2.txt geschrieben wird, verwenden? Ich möchte Datei2.txt lesen aktualisiert werden:

2 
apple 1.056 
ref 15 

Ich bin ein Befehl grep denken kann funktionieren, aber ich bin nicht sicher, wie man das macht. Jede Hilfe wird sehr geschätzt! Dank

+0

Bitte erläutern Sie das ganze Problem, denn jetzt ist es möglich, das gewünschte Ergebnis einfach durch das Kopieren Fil1.txt zu Datei2.txt erhalten möchten und ersetze die erste Zeile. – klutt

+0

Hat Datei2 wirklich eine unbekannte..unbekannte Spalte oder ist das nur ein Teil Ihres Beispiels? – gregory

+0

File1.txt und File2.txt können sehr unterschiedlich strukturiert sein. Apfel von File1.txt kann in einer anderen Zeile als File2.txt sein – user7649922

Antwort

3

Wie kann ich den Wert für Apfel haben (1.056) von File1.txt in anstelle des verwendet werden, was für Datei2.txt geschrieben? Ich möchte Datei2.txt zu lesen aktualisiert:

Straight forward awk, die mehrmals in Foren wiederholt wird, suchen Sie bitte vor der Veröffentlichung.

Eingang

$ cat f1 
1 
apple 1.056 
ref 15 

$ cat f2 
2 
apple unknown 
ref unknown1 

Ausgabe

$ awk 'FNR==NR{a[$1]=$2;next}($1 in a){$2=a[$1]}1' f1 f2 
2 
apple 1.056 
ref 15 
+1

Diese Probleme werden nie verblassen :) aber immer noch eine gute und funktionierende Antwort ++ – anubhava

+1

@anubhava: true, danke :) –

+0

Dank Akshay Hegde .... Das Problem mit dieser Methode ist, dass es alle gängigen Variablen ausschaltet. Was wenn ich nur den Apfel wechseln möchte? Wie kann ich das für Schlüsselvariablen spezifisch machen? – user7649922

Verwandte Themen