2012-04-10 4 views
1

Ich versuche, ein Skript zu schreiben, das eine Textdatei liest und jede Zeile in einer Zeichenfolge speichert. Ich möchte auch, dass das Skript alle Zeilen überspringt, die mit einem Hash-Symbol beginnen. Irgendwelche Vorschläge?Zeile in Textdatei überspringen, die mit '#' über KornShell (ksh) beginnt

+0

Was ist, wenn es Millionen Linien gibt ... Willst du in Millionen Strings streoe? – Vijay

+1

Nein, ich werde sie nicht streicheln, weil es keine Millionen Linien geben wird. Ich sagte auch: Eine Saite, wie in EINER Saite. – TomSelleck

Antwort

3

Sie sollten keine überspringenden Linien zu ksh verlassen. Z.B. Dazu:

grep -v '^#' INPUTFILE | while IFS="" read line ; do echo $line ; done 

Und statt des echo Teil tun, was Sie wollen.

Oder wenn ksh nicht diese Syntax unterstützt:

grep -v '^#' INPUTFILE > tmpfile 
while IFS="" read line ; do echo $line ; done < tmpfile 
rm tmpfile 
+0

Danke für den Vorschlag, ich bekomme, "Fehler auf Standard-Ausgabe schreiben die Pipe wird geschlossen" irgendwelche Ideen ?? – TomSelleck

+0

Versuchte letztere Lösung und alles funktioniert gut. – TomSelleck

2
while read -r line; do 
    [[ "$line" = *()#* ]] && continue 
    # do something with "$line" 
done < filename 

Look für "Dateiname Patterns" oder "Dateiname Generation" in der KSH -Handbuchseite.