csh Fragen

fred123

Well-Known Member
Hallo

der Befehl:

user# ls /dev/ | grep da | cut -f 1 -d " "

bringt z.B. einen String:

user# da0 da0s1 da1 da2 da2s4 da3

-----------------------------------------------

Der String ist nur Beispiel. Ich brauche den letzte bzw. vorletzten Eintrag davon.

Wie mache ich das am geschicktesten?

Gruss Fred
 
Hallo

werd ein wenig laestig :-)) Noch ne Frage:

Ich habe hier in 2 $Var(n) Strings. Sehen so aus

var1=da0 da0s1 da2 da3 da3s4 da4
var2=da0 da0s1 da1 da1s1 da2 da3 da3s4 da4

Ich moechte die kuerzere von der laengeren abziehen, das nur noch das

var3=da1 da1s1

ueberig bleibt. Wahrscheinlich auch etwas fuer AWK. Prinzip ist mir, glaube ich, klar. Wort nehmen,
Schleife bauen, vergleichen, wenn = dann beide wegwerfen, naechstes Wort.

Bei den da enstehenden verschachtelten Schleife-Strukturen hab ich mir die Karten gelegt :-((

Oder gibt es eine einfachere Loesung??
Kennt jemand ein Stueck "Beispielpcode" den ich mir als Muster mal anschauen könnte??

Eine URL oder ein Schippsel hier wuerd mir sehr helfen

Gute Nacht Fred
 
Zuletzt bearbeitet:
fred123 schrieb:
Prinzip ist mir, glaube ich, klar. Wort nehmen,
Schleife bauen, vergleichen, wenn = dann beide wegwerfen, naechstes Wort.

Wäre es nicht einfacher var2 Wort für Wort abzuklappern? Wenn das Wort aus var2 nicht in var1 ist, dann an var3 anhängen und fertig ;) Ohne lästiges "Löschen aus beiden"...
ne einfachere Lösung weiß ich leider auch net... außerdem hab ich grad nen Kunden am Ohr und kann mich net konzentrieren :D
 
Code:
#!/bin/sh
var1="da0 da0s1 da2 da3 da3s4 da4"
var2="da0 da0s1 da1 da1s1 da2 da3 da3s4 da4"
var3=
for var in $var2; do
	keep=1
	for remove in $var1; do
		if [ "$var" = "$remove" ]; then
			keep=0
		fi
	done
	if [ $keep -eq 1 ]; then
		if [ "$var3" = "" ]; then
			var3="$var"
		else
			var3="$var3 $var"
		fi
	fi
done
echo "$var3"
 
Ich wuerde da sort|uniq verwenden ...

Die Umwandlung space->\n ist halt weng haesslich.
Code:
% foo="a b c d e" bar="b d"; echo $foo $bar|tr ' ' '\n'|sort|uniq -u|tr '\n' ' ';echo
a c e 
%
 
ENNEMMEE schrieb:
Wäre es nicht einfacher var2 Wort für Wort abzuklappern? Wenn das Wort aus var2 nicht in var1 ist, dann an var3 anhängen und fertig ;) Ohne lästiges "Löschen aus beiden"...
ne einfachere Lösung weiß ich leider auch net... außerdem hab ich grad nen Kunden am Ohr und kann mich net konzentrieren :D

Klar!!! Ich sollte vielleicht etwas mehr am Tage arbeiten ;-) Nachts ist das so schwierig mit dem denken.

@[LoN]Kamikaze
Danke fuer den Codeschnippsel. Hab ich mit zig Syntaxfehlern in anderer Form mit AWK
schon etwas drauf geuebt.

So einfach und schoen kann sh sein :-))

Wenn mann es kann.

Danke und tschuess

Fred
 
Zurück
Oben