PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : awk soll field 3 bis NF ausgeben Oder bash array



bash_azubi
14-10-2007, 10:39
Hi Leute,
ich möchte von einer Zeile (Rückgabe von dialog) nur die Ausgabe ab Feld 3 ausgeben, um sie einer Variablen zuzuordnen.
Folgendes liefert mir zwei unnötige Leerzeichen vorne vorweg:

~$ export VALUE="ldap domain.xx ldap Heim Organisations Adresse"
~$ echo $VALUE | awk '{$1="";$2=""; print }'
ldap Heim Organisations Adresse


Das hier funktioniert zwar, aber ich weis nicht wieviele Leerzeichen der User wirklich eingegeben hat:

~$ export VALUE="ldap domain.xx ldap Heim Organisations Adresse"
~$ echo $VALUE | awk '{print $3,$4,$5,$6,$7,$8,$9}'
ldap Heim Organisations Adresse

=> Schöner wäre es, wenn es eine Möglichkeit gibt nur $3-NF auszugeben. Wie geht das?

Alternativ wäre es klasse, wenn ich auf awk verzichten könnte und die Variable VALUE in ein array umwandeln könnte, dann ist der Zugriff einfach.

~$ VALUE[1]=ldap
~$ VALUE[2]=domain.xx
~$ echo ${VALUE[2]}
domain.xx
=> Wie aber wandele ich die Variable in ein array um?

Vielen Dank für euer Mitdenken.

BLUESCREEN3D
14-10-2007, 15:50
ich weis nicht wieviele Leerzeichen der User wirklich eingegeben hat
Mehrfache Leerzeichen verschwinden eh, wenn du echo $VALUE machst.


Schöner wäre es, wenn es eine Möglichkeit gibt nur $3-NF auszugeben.

echo $VALUE | cut -d ' ' -f 3-


Wie aber wandele ich die Variable in ein array um?

array=($VALUE)
echo ${array[0]}

jan61
14-10-2007, 23:56
Moin,

jan@jack:~/.archiv/.images/progs> echo $VALUE | awk ' { for (i = 3; i <=NF; i++) printf "%s ", $i; printf "\n"; } '
ldap Heim Organisations Adresse
Jan

bash_azubi
16-10-2007, 13:35
Die Methode mit cut ist genial einfach.
Die awk Lösung ist auch klasse, da habe ich wieder was gelernt.

Danke Jungs!