2013-12-25 4 views
0

У меня есть текстовый файл, имеющий несколько строк по строкам. Я читаю этот файл через KornShell (ksh) и получаю эти имена и выполняя некоторые операции в цикле. Я хочу поместить некоторый комментарий в текстовый файл для удобочитаемости (т. Е. Строки, начинающиеся с #, - это комментарии, которые не нужно читать). Итак, я хочу прочитать строки, которые не начинаются с символа #.пропустить строки при чтении текстовых файлов из ksh

В KSH, я читаю так:

while read base 
do 
--- 
--- 
done<file 

Я пытался использовать Grep, но не работает. Я хочу, чтобы правильный синтаксис был достигнут в ksh.

ответ

0

Как об этом (отредактирован, чтобы включить полный фрагмент кода):

while read base 
do 
    # skip comments 
    [ -z "`echo $base | grep '^#'`" ] || continue 
    # handle remaining lines here 
done<file 

Но other answer содержит гораздо более кратким и ksh -ish решение.

+0

где включить это условие. может u plz eloborate ..? – user2496132

+0

См. Отредактированный ответ. –

1

Вы можете сделать это, например (read.sh):

#!/bin/ksh 

while read line 
do 
    [[ $line = \#* ]] && continue 

    echo $line 
done < read.sh 
+0

какой эта часть сделаю ..? Я хочу выполнить операцию на строках, не начинающихся с eith # .. может u expalain бит – user2496132

+0

continue как продолжение на любом другом языке - он «пропустит до конца цикла» и фактически прочитает следующую строку. Итак, в том месте, где я делаю echo $ line, вы можете выполнять свои операции, потому что в этот момент вы знаете, что строка $ не начинается с # –

+0

. Двойные скобки - это всего лишь тестовый оператор с сопоставлением с образцом (он соответствует всем, начиная с хеша, хеш должен быть экранирован, потому что иначе он будет интерпретироваться как комментарий в скрипте): http://www.mkssoftware.com/docs/man1/test.1.asp –

Смежные вопросы