bestimmte Zeile aus einer großen Anzahl von Dateien ausgeben

19/08/2011 - 09:20 von Simon Linden | Report spam
Hallo,

ich versuche folgendes Problem zu lösen.
In mehreren Unterverzeichnissen befinden sich sehr viele Dateien, die
ich
anhand der Dateiendung identifizieren kann. Von diesen Dateien will
ich mir den
Inhalt einer bestimmten Zeile und den Dateinamen ausgeben lassen. Da
sich die
gewünschte Zeile stàndig àndert, übergebe ich diese dem Skript als
Parameter.
Soweit hab ich es schon:

#!/bin/bash

for f in `find . -type f -name *txt` ; do
zeile=`sed -n "${1}p" "$f"`
if [ -n "${zeile}" ] ; then
echo "Datei: $f"
echo ${zeile}
echo "--"
fi
done

Die Dateien haben aber alle eine unterschiedliche Größe. Ich will zum
Beispiel die Zeilennummer 100 ausgeben. Bei Dateien mit weniger als
100
Zeilen, soll der Dateiname nicht ausgegeben werden.
Diesen Fall hab ich über die if-Bedingung gelöst. Was ich noch gerne
hàtte,
wenn die Zeile nur whitespace (Leerzeichen/Tabs) enthàlt, dann
interessiert
mich der Dateiname auch nicht.

Kann mir jemand einen Tipp geben wie ich das noch lösen könnte..? Auch
für
Kommentar/Verbesserung meiner obigen paar Zeilen wàre ich sehr dankbar!
 

Lesen sie die antworten

#1 Henning Hucke
19/08/2011 - 12:11 | Warnen spam
On Fri, 19 Aug 2011, Simon Linden wrote:

Hallo,



Hallo Simon,

ich versuche folgendes Problem zu lösen.
In mehreren Unterverzeichnissen befinden sich sehr viele Dateien, die
ich anhand der Dateiendung identifizieren kann. Von diesen Dateien will
ich mir den Inhalt einer bestimmten Zeile und den Dateinamen ausgeben
lassen. Da sich die gewünschte Zeile stàndig àndert, übergebe ich diese
dem Skript als Parameter.
[...]



Wie wàre es mit

awk '/^.*/ { if ( FNR == 100) print $0 }' file1 [file2 ...]

Unter Unixen hast Du einen /riesigen/ Werkzeugkasten. Warum beschrànkst Du
Dich auf Hammer und Schraubendreher, wenn eine Menge mehr Werkzeuge im
Kasten liegen und Hammer und Schraubendreher offensichtlich nicht
sonderlich für die Lösung des Problems geeignet sind?

"awk" ist ja nun auch nicht so fern liegend wie es im Vergleich ein
"Mundschellen-Aufspannring" wàre.

MfG Henning
Das Làcheln ist ein Fenster, durch das man sieht, ob das Herz zu Hause ist.
(Sprichwort aus Russland)

Ähnliche fragen