2016-06-10 16 views
1

Meine temp.txt Datei enthält folgende: -Lesen der Datei und Schreiben der Zeilenlänge und Zeichenposition. Warum werden alternative Zeilen verarbeitet?

x [deleted]   (none)  -> origin/redeem_deal0 
x [deleted]   (none)  -> origin/redeem_deal1 
x [deleted]   (none)  -> origin/redeem_deal2 
x [deleted]   (none)  -> origin/redeem_deal3 

WRITEN Code, der die Position der/und Leitungslänge zu erhalten, jede Zeile.

cat temp.txt | while read line 
do 
    echo $line  
    LINE_LEN="$(line | wc -c)" 
    echo $LINE_LEN 
    POS_FWD_SLASH=$(line | grep -b -o/| awk 'BEGIN {FS=":"}{print$ 
    echo $POS_FWD_SLASH 
done 

Ausgänge: -

[email protected]:~/beawel/wwwnew$ /bin/sh deleted.sh 
x [deleted]   (none)  -> origin/redeem_deal0 

55 
41 
x [deleted]   (none)  -> origin/redeem_deal3 

1 

Wenn ich Code aus LINE_LEN kommentieren Sie Echo, und lassen Sie nur "echo $ line" es alle 4 Zeilen druckt. Aber nicht mit dem Code wie oben. Bitte helfen Sie mir, alle 4 Zeilen zu verarbeiten.

Antwort

0

${#str} gibt Länge $str keine Notwendigkeit für wc -c.

Jedes Mal, wenn Sie eine while-Schleife über eine Datei haben, sollten Sie aufhören und prüfen, ob awk das Werkzeug für Sie ist:

% awk '{print $0 RS length($0) RS index($0, "/")};' temp.txt 
x [deleted]   (none)  -> origin/redeem_deal0 
54 
42 
x [deleted]   (none)  -> origin/redeem_deal1 
54 
42 
x [deleted]   (none)  -> origin/redeem_deal2 
54 
42 
x [deleted]   (none)  -> origin/redeem_deal3 
54 
42 
+0

Im Shell-Skript wünschen sich „redeem_dealx“ in einer Variablen und verarbeiten sie zu extrahieren des Weiteren. Also, ich muss Zeile für Zeile verarbeiten. – user3903517