2016-04-25 12 views
-2

Ich habe eine Datei, die eine Liste von Produkten enthält. Jede Zeile sieht so aus: Produkt - Stück - Preis. Ich würde es gerne nach dem Preis * sortieren.Sortieren nach dem Produkt der 2. und 3. Felder (Linux)

+1

Probieren Sie es aus und fragen Sie erneut, ob etwas nicht richtig funktioniert. Dies ist kein kostenloser Codierungsdienst. – twalberg

+2

Zeigen Sie Beispieldaten Ihrer Datei mit der erwarteten Ausgabe und Ihren Versuchen an – anubhava

Antwort

0

Mit einer Kombination von awk und sort können Sie tun, was Sie wollen.

awk '{p = $2*$3; print p,$1,$2,$3}' your-file | sort -n 

Dadurch wird ein Temp. Erstellt. Variable namens und weist ihm das Produkt der Spalten 2 und 3 zu.

Dann wird dieses Produkt ausgedruckt, gefolgt von den 3 ersten Spalten.

Danach wird der Linux sort Befehl den Rest erledigen.

0

Sie sollten wirklich eine Tabellenkalkulation wie Excel oder Libreoffice in Betracht ziehen, sobald Sie die Datei in die Tabelle importieren, ist das Sortieren und Multiplizieren von Spalten wirklich einfach.

Having said that: Wenn Sie mit GNU Awk vertraut sind, ein Skript wie das funktionieren könnte:

artcls.awk

BEGIN { # sort array numerically 
     PROCINFO["sorted_in"] = "@ind_num_asc" 
     FS=" - " 
     } 

     { p = $2 * $3 
     if (p in lines) { 
      lines[ p ] = lines[ p ] "\n" $0 
     } 
     else lines[ p ] = $0 
     } 
END { for(p in lines) print lines[ p ], p } 

Sie es wie folgt verwenden können: awk -f artcls.awk your_file.

Verwandte Themen