PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Bestimmte zeilen mit awk entfernen



sunshine-live
04-01-2005, 11:43
Hallo,

ich möchte mir bei meinem HP Unix System die installierte Software anzeigen lassen mit dem Befehl swlist. Nun bekomme ich jedoch auch zusätzlich Kommentare anzeigt. Da ich die Daten für eine Datenbank benötige sind die Kommentare überflüssig.

Beispiel:

$ swlist (Eingabe Befehl)
# Initializing...
# Contacting target "tdeunx19"...
#
# Target: tdeunx19:/
#

#
# Bundle(s):
#
B3701AA_TRY C.03.55.00 Trial HP GlancePlus/UX Pak for s800 11i
B3901BA B.11.11.04 HP C/ANSI C Developer's Bundle
#
# Product(s) not contained in a Bundle:
#

DATA-PROTECTOR A.05.10 HP OpenView Storage Data Protector

Also der rotmarkierte Bereich mit Kommentaren und Leerzeieln ist überflüssig, sollen entfernt werden.
Mein Ansatz um die erste Spalte auszugeben:
swlist | awk '{print $1}'

Jetzt müssen nur noch die Kommentare und Leerzeilen entfernt werden.

Vielen Dank für die Hilfe

shb
04-01-2005, 12:28
versuch mal hier mit


swlist | awk --posix '$1~/^[A-Za-z0-9].*/{print}'

cu SHB

peschmae
04-01-2005, 12:32
Entweder


| awk '/^[^#]/ { print $1 }'


oder alternativ ein grep -v vorschalten:


| grep -v -e ^# | awk '{ print $1 }'


MfG Peschmä

Joghurt
04-01-2005, 12:34
Oder noch einfacher
swlist|sed -e '/^#/d'löscht alle Zeilen, die mit # beginnen.

sunshine-live
04-01-2005, 12:53
dankeschön für die schnelle Hilfe;

@ Joghurt

Gibt es noch eine Möglichkeit, um Leerzeilen zu entfernen?

fs111
04-01-2005, 13:18
grep -v "^#\|^$"


Kürzer wird es kaum gehen

fs111

sunshine-live
04-01-2005, 13:51
So sieht die lösung jetzt aus und funktioniert wunderbar.
Vielen Dank
#get application
app=`swlist | sed -e '/^#/d' | awk '{ print $1 }'`
echo Applications:
echo "============="
for line in $app
do
echo $line
done

Joghurt
04-01-2005, 20:47
Den awk-teil kannst du auch einsparen und direkt in sed-einbinden:
sed -e'/^#/d;s/ .*//'