bash awk frage "immer den kopf" ausgeben

Du suchst ein Programm für einen bestimmten Zweck?
Antworten
ren22

bash awk frage "immer den kopf" ausgeben

Beitrag von ren22 » 30.11.2015 20:08:50

hallo, nachdem ich gestern mal wieder ein Tag "verschwendet" habe mit der Suche der Lösung, mit einem bashscript, awk und grep oder ggf.sed immer den "Kopf(also immer da wo rar.listing steht)" quasi auszugeben..., Ich habe eine Datei "Datenbankdatei", in der soll das script suchen, ...suche. Bsp.: Ich suche nach "acmevx" und hätte gerne "9vx.rar.listing" als Ausgabe oder ich suche nach "915resolution" dann sollte das bashscript "915resolution.rar.listing" ausgeben.

Code: Alles auswählen

9vx.rar.listing
usr/local/bin/9vx
usr/local/bin/9vx-iso
usr/local/bin/9vxc
usr/local/bin/9vxp
usr/local/bin/acmevx
usr/local/bin/rcvx
usr/local/bin/tap


915resolution.rar.listing
usr/local/sbin/915resolution
usr/local/tce.installed/915resolution


8086tiny.rar.listing
usr/local/share/licences/8086tiny/license.txt
usr/local/share/8086tiny/8086tiny.tar.gz
usr/local/bin/8086tiny
usr/local/tce.installed/8086tiny
Danke

uname
Beiträge: 12468
Registriert: 03.06.2008 09:33:02

Re: bash awk frage "immer den kopf" ausgeben

Beitrag von uname » 30.11.2015 20:55:48

Wie lässt sich der Header finden? Ich bin mal davon ausgegangen, dass er kein / enthält und die Zeile nicht leer ist. Ob das stimmt weiß ich nicht.

Ein awk-Script könnte dann so aussehen. Nicht wirklich schön:

Code: Alles auswählen

awk '{if ($0 !~ "\/" && $0 != "") {h=$0};if ($0 ~ "acmevx") {print h}}' datei.txt
Beim zweiten Beispiel erhälst du drei Ausgaben. Das müsste man noch weiter optimieren.

cronoik
Beiträge: 2049
Registriert: 18.03.2012 21:13:42
Lizenz eigener Beiträge: GNU Free Documentation License

Re: bash awk frage "immer den kopf" ausgeben

Beitrag von cronoik » 30.11.2015 21:00:55

Du willst also immer den ersten Treffer haben und die weiteren sollen ignoriert werden?

Code: Alles auswählen

grep -m 1 "string" DATEI
ren22 hat geschrieben:"acmevx" und hätte gerne "9vx.rar.listing"
Ist das ein Insider oder warum matched acme auf 9? :o
Hilf mit unser Wiki zu verbessern!

ren22

Re: bash awk frage "immer den kopf" ausgeben

Beitrag von ren22 » 30.11.2015 21:09:28

@uname super, vielen lieben Dank, genau das was ich gesucht habe, :THX: :THX: :THX: :hail: ist es möglich die Ausgabe nur einmal anstatt zweimal zubekommen ?
Danke

Benutzeravatar
Meillo
Moderator
Beiträge: 9267
Registriert: 21.06.2005 14:55:06
Wohnort: Balmora
Kontaktdaten:

Re: bash awk frage "immer den kopf" ausgeben

Beitrag von Meillo » 30.11.2015 21:35:15

Hier mein Vorschlag mit awk und in ein Shell-Script verpackt:

Code: Alles auswählen

#!/bin/sh

if [ $# -ne 1 ]; then
        echo "Usage: ${0##*/} RE" >&2
        exit 1
fi

awk '
{
        if (/^$/) {
                h=""
        } else if (!h) {
                h=$0
                found=0
        } else if (!found && /'"$1"'/) {
                print h
                found=1
        }
}
'
Use ed once in a while!

ren22

Re: bash awk frage "immer den kopf" ausgeben

Beitrag von ren22 » 30.11.2015 21:47:27

Danke euch alle, perfekt :)

Benutzeravatar
ThorstenS
Beiträge: 2875
Registriert: 24.04.2004 15:33:31

Re: bash awk frage "immer den kopf" ausgeben

Beitrag von ThorstenS » 01.12.2015 14:29:17

Sehr elegant Meillo - gefällt mir

Antworten