• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

[gelöst] Einzelne Zeilen eines Textes mit neuem Befehl anwe

Hallo,

ich möchte gerne einzelne Zeilen einer Textdatei, die ich zuvor bearbeitet habe, mit einem neuen Befehl nacheinander ablaufen lassen.
Mein kleines Stückchen Code sieht bis jetzt wie folgt aus:
Code:
#!/bin/bash
cat 123.txt | grep modified | cut -c 21-
Ich habe also eine Textdatei 123.txt auf "modified" gegrepped und die ersten 21 Zeichen abgeschnitten. Jetzt habe ich eine variable Anzahl an Zeilen (verschiedene Pfade), welche ich jetzt anschließend alle nacheinander auflisten will (z.B. mit ls).
Beispiel:
VORHER --> home/Ordner1
home/Ordner 2
NACHHER --> ls home/Ordner
ls home/Ordner

Da ich noch sehr neu in der Linuxwelt bin, dieses Skript mir aber direkt eine Menge manuellen Aufwand abnehmen würde, hoffe ich auf Eure Hilfe.

Liebe Grüße,
c-loos
 
Bin mir nicht ganz sicher ob ich deine Frage verstanden habe.

Angenommen du hast eine Datei 123.txt mit dem Inhalt
Code:
home/Ordner1
home/Ordner2
home/Ordner3
home/Ordner4
home/Ordner5
home/Ordner6
dann kannst du die einzelnen Zeilen so bearbeiten:
Code:
for n in $(cat 123.txt); do echo $n; done
Anstelle von echo $n kannst du deine Prozedur einsetzen.
 
Z.B. so:
Code:
#!/bin/bash

cat "123.txt" | while read n
do
    if test -d "$n"
    then
        ls "$n"
    fi
done
oder
Code:
#!/bin/bash

while read n
do
    if test -d "$n"
    then
        ls "$n"
    fi
done < 123.txt
Da bist Du auf ein leidiges Problem der Shell gestoßen, Erklärung z.B. hier.

HTH
 
@ mahol:
mahol schrieb:
for n in $(cat 123.txt); do echo $n; done
Danke, genau das habe ich gesucht!!
Code:
#!/bin/bash
for n in $(cat 123.txt | grep modified | cut -c 21-); do ls $n; done

@ abgdf:
Auch vielen Dank an dich. Nach der for-Schleife und deinem Verweis auf das Shellproblem habe ich mich diesem angenommen und nehme nun auch die while-Lösung. Ich habe jedoch den test -d weggelassen, weshalb mein Code nun wie folgt aussieht:
Code:
#!/bin/bash
cat 124.txt | grep modified | cut -c 21- | while read n
do
    ls "$n"
done

Nochmals vielen Dank euch beiden. Ich hätte zwar selber drauf kommen können, aber das hätte viel länger gedauert und mir dadurch viel Arbeit verursacht.

Liebe Grüße aus'm Schwabenländle,
c-loos
 
Oben