2015-03-26 7 views
0

Итак, я компилирую этот код для чтения текстового файла, однако он успешно находит сумму каждого столбца, за исключением первой строки! Следовательно, дает мне неправильное суммирование, которое исключает значение в первой строке, в которой он читает. Он устанавливает значение: $ line = ddsdfj: jdskf: 1: fjf, но никогда не извлекает 1 из первой строки. Любые подсказки будут оценены.Первая строка текстового файла, не прочитанная в оболочке

FILE=$1 
while read line 
do 
awk -F: '{summation += $3;}END{print summation;}' 
done < $FILE 
+0

Как это работает? вы ничего не передали awk, чтобы читать ??? –

+0

Я назову это через bash -> ./filename.sh some.txt – user4516211

ответ

0

Цилиндр while полностью лишний. Похоже, что вы хотите получить

awk -F: '{s+=$3}END{print s}' "$1" 

довольно просто.

Код, который у вас был, будет читать первую строку с read, а затем другими строками в качестве стандартного входа awk; следовательно, поведение, которое вы наблюдали. Что-то вроде

while read line; do 
    awk -F: '{s+=$3}END{print s}' <<<"$line" 
done <"$1" 

бы на самом деле использовали значение из line для чего-то, но, конечно, это было бы просто извлечь третье поле из каждой строки в отдельности, не производится никакого фактического сложения значений из разных линий.

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