staging.inyokaproject.org

cut ignoriert die mit -f angegebene Reihenfolge

Status: Gelöst | Ubuntu-Version: Kubuntu 14.04 (Trusty Tahr)
Antworten |

maplecut

Avatar von maplecut

Anmeldungsdatum:
7. Februar 2011

Beiträge: Zähle...

Ich habe schon oft den cut-Befehl benutzt, um einen schnellen Überblick über Messdaten zu erhalten. Heute stehe ich aber auf dem Schlauch, weil cut die von mir gewünschte Reihenfolge ignoriert.

Ich möchte Messdaten nach dem Zählerstand sortieren und dazu den Zählerstand aus Spalte 4 in der ersten Reihe ausgeben und in der zweiten Reihe den Messpunktnamen aus Spalte 3. Aber die Spalten werden immer in der original-Reihenfolge ausgegeben, egal welche Spalten-Reihenfolge ich hinter -f angebe. Selbst wenn ich alle vier Spalten z.B. mit -f4,3,2,1 ausgeben will, kommt immer die Original-Reihenfolge 1,2,3,4.

Im Codeblock wird erst die Original-Ausgabe gezeigt und dann zwei Versuche mit cut. Sicher habe ich nur gerade Tomaten auf den Augen, aber ich komme nicht selbst drauf. Kann mir bitte jemand einen Schupps geben?

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
$ acmessung 
07.05.2017 08:29:30 1_imp 0.09196
07.05.2017 08:29:30 1_exp 26.5883
07.05.2017 08:29:30 2_imp 0.0143
07.05.2017 08:29:30 2_exp 154.514
07.05.2017 08:29:30 3_imp 0.01274
07.05.2017 08:29:30 3_exp 120.241
07.05.2017 08:29:30 3P_imp 0.0185
07.05.2017 08:29:30 3P_exp 102.507
07.05.2017 08:29:30 4_imp 14.8316
07.05.2017 08:29:30 5_imp 0.03347
07.05.2017 08:29:30 5_exp 113.807
07.05.2017 08:29:30 5P_imp 0.03083
07.05.2017 08:29:30 5P_exp 99.2157
07.05.2017 08:29:30 6_imp 0.03749
07.05.2017 08:29:30 7_imp 0.06751
07.05.2017 08:29:30 7_exp 114.788
07.05.2017 08:29:30 7P_imp 0.02022
07.05.2017 08:29:30 7P_exp 130.5
$
$ acmessung | cut -d" " -f4,3
1_exp 26.5883
1_imp 0.09196
2_exp 154.514
2_imp 0.0143
3_exp 120.241
3_imp 0.01274
3P_exp 102.508
3P_imp 0.0185
4_imp 14.8316
5_exp 113.807
5_imp 0.03347
5P_exp 99.2161
5P_imp 0.03083
6_imp 0.03749
7_exp 114.789
7_imp 0.06751
7P_exp 130.5
7P_imp 0.02022
$
$ acmessung | cut -d" " -f3,4
1_exp 26.5884
1_imp 0.09196
2_exp 154.514
2_imp 0.0143
3_exp 120.242
3_imp 0.01274
3P_exp 102.508
3P_imp 0.0185
4_imp 14.8317
5_exp 113.808
5_imp 0.03347
5P_exp 99.2165
5P_imp 0.03083
6_imp 0.03749
7_exp 114.789
7_imp 0.06751
7P_exp 130.501
7P_imp 0.02022
$ 

kB Team-Icon

Supporter, Wikiteam
Avatar von kB

Anmeldungsdatum:
4. Oktober 2007

Beiträge: 9837

cut ist nicht für eine Änderung der Reihenfolge der Felder vorgesehen. Lese die manpage:

man cut

Dort findest Du den Satz: "Selected input is written in the same order that it is read, and is written exactly once."

Wieso ändert cut die Reihenfolge der Zeilen in Deinem Beispiel?

sort kann übrigens auch nach einer beliebigen Spalte sortieren, nicht nur nach der ersten!

maplecut

(Themenstarter)
Avatar von maplecut

Anmeldungsdatum:
7. Februar 2011

Beiträge: 239

Sorry für die Verwirrung! Eine Nachlässigkeit von mir.

Weil der Zweck der Spaltenumordnung letztendlich die Sortierung der Messwerte ist, stand da ursprünglich

$ acmessung | cut -d" " -f4,3 | sort

Weil es bei der Problembeschreibung aber nur um "cut" geht, habe ich das "sort" heraus genommen, nachdem ich schon alles in den Codeblock kopiert hatte. Dass die Zeilen da schon umsortiert waren, hatte ich übersehen. Am beschriebenen Problem ändert sich dadurch nichts.

track

Avatar von track

Anmeldungsdatum:
26. Juni 2008

Beiträge: 7174

Wenn Du mit der Reihenfolge machen können willst was Du willst, nimm einfach awk : 😉

track@track:~$ echo '07.05.2017 08:29:30 1_imp 0.09196
07.05.2017 08:29:30 1_exp 26.5883
07.05.2017 08:29:30 3_imp 0.01274
07.05.2017 08:29:30 3_exp 120.241
07.05.2017 08:29:30 3P_imp 0.0185
07.05.2017 08:29:30 3P_exp 102.507'  |  awk '{print $4,$3,$2,$1}'
0.09196 1_imp 08:29:30 07.05.2017
26.5883 1_exp 08:29:30 07.05.2017
0.01274 3_imp 08:29:30 07.05.2017
120.241 3_exp 08:29:30 07.05.2017
0.0185 3P_imp 08:29:30 07.05.2017
102.507 3P_exp 08:29:30 07.05.2017 

p.s.: cut ist für mich sowieso ein rotes Tuch, denn es ist nicht einmal utf-8 - sicher: 😲

track@track:~$ echo problem  |  cut -c4-7
blem
track@track:~$ echo pröbläm  |  cut -c4-7
�bl 

LG,

track

maplecut

(Themenstarter)
Avatar von maplecut

Anmeldungsdatum:
7. Februar 2011

Beiträge: 239

Ok, habe meinen blöden Denkfehler endlich erkannt. Cut ändert tatsächlich nicht die Reihenfolge der Felder und ich hatte das früher auch nur verwendet, um einzelne Felder heraus zu picken. Ich hatte mich falsch erinnert und war überzeugt, dass cut auch die Reihenfolge ändern kann.

awk ist die Lösung!

Danke und schönen Sonntag!

kB Team-Icon

Supporter, Wikiteam
Avatar von kB

Anmeldungsdatum:
4. Oktober 2007

Beiträge: 9837

track schrieb:

[…] p.s.: cut ist für mich sowieso ein rotes Tuch, denn es ist nicht einmal utf-8 - sicher: […]

Interessant! Und schockierend, weil dieser alte Bug immer noch nicht beseitigt wurde. Die Dokumentation von coreutils (info cut) enthält:

‘-b BYTE-LIST’
‘--bytes=BYTE-LIST’
     Select for printing only the bytes in positions listed in
     BYTE-LIST.  […]

‘-c CHARACTER-LIST’
‘--characters=CHARACTER-LIST’
     Select for printing only the characters in positions listed in
     CHARACTER-LIST.  The same as ‘-b’ for now, but internationalization
     will change that. […]

Das wurde so auch schon vor 10 Jahren angekündigt …

cut -c ist schlicht unbrauchbar!

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13242

maplecut schrieb:

Weil der Zweck der Spaltenumordnung letztendlich die Sortierung der Messwerte ist, stand da ursprünglich

$ acmessung | cut -d" " -f4,3 | sort

Weil es bei der Problembeschreibung aber nur um "cut" geht, habe ich das "sort" heraus genommen, nachdem ich schon alles in den Codeblock kopiert hatte. Dass die Zeilen da schon umsortiert waren, hatte ich übersehen. Am beschriebenen Problem ändert sich dadurch nichts.

Aber Du musst die Anordnung der Spalten nicht ändern, um mit sort selektiv und in der passenden Reihenfolge der Felder zu sortieren!

maplecut

(Themenstarter)
Avatar von maplecut

Anmeldungsdatum:
7. Februar 2011

Beiträge: 239

Danke! Ich habe es inzwischen auch (wieder-)entdeckt.

Ich habe diese Sachen vor ca. 10 Jahren intensiv genutzt und glaubte mich recht genau erinnern zu können, wie alles funktioniert hat. Hätte aber doch vorher nochmal nachlesen sollen, dann hätten wir uns diesen Thread sparen können.

Danke für alle Antworten! Haben mit wieder auf die Sprünge geholfen. Jetzt komme ich vorerst weiter.

Antworten |