получить только целое число от wc в bash - PullRequest
103 голосов
/ 19 сентября 2010

Есть ли способ получить целое число, которое wc возвращает в bash?

В основном я хочу записать номера строк и количество слов на экран после имени файла.

output: filename linecount wordcount Вот то, что я имею до сих пор:

<code>files=`ls`
for f in $files;
do
        if [ ! -d $f ] #only print out information about files !directories
        then
                # some way of getting the wc integers into shell variables and then printing them
                echo "$f $lines $ words"
        fi
done

Ответы [ 15 ]

0 голосов
/ 13 ноября 2017
files=`ls`
echo "$files" | wc -l | perl -pe "s#^\s+##"
0 голосов
/ 13 июня 2017

"Обычно я хочу записать номера строк и количество слов на экран после имени файла."

answer=(`wc $f`)
echo -e"${answer[3]}
lines:  ${answer[0]}
words:  ${answer[1]}
bytes:  ${answer[2]}"

Выводы: myfile.txtстроки: 10 слов: 20 байт: 120

0 голосов
/ 21 марта 2017

Другой способ, похожий на то, что написал @BananaNeil:

$ cat myfile.txt | wc -l
0 голосов
/ 04 июля 2012
typeset -i a=$(wc -l fileName.dat  | xargs echo | cut -d' ' -f1)
0 голосов
/ 19 сентября 2010

Попробуйте это:

wc `ls` | awk '{ LINE += $1; WC += $2 } END { print "lines: " LINE  " words: " WC }'

Создает количество строк и количество слов (LINE и WC) и увеличивает их на значения, извлеченные из wc (используя $ 1 для значения первого столбца и $ 2 для второго), и, наконец, печатает результаты.

...