2015-11-14 3 views
-1

Я пытаюсь подсчитать суммарную сумму столбца и вернуть ответ в последнем столбце выходного файла.Подсчет вхождений поля через несколько строк

Ниже приведен пример входного файла

a 
a 
a 
b 
b 
c 
d 
d 

Здесь желаемый результат

a 1 
a 2 
a 3 
b 1 
b 2 
c 1 
d 1 
d 2  

Я хотел бы решение, чтобы иметь возможность запускать из командной строки Unix.

+3

Очень легко с ассоциативным массивом. Лучше скажите, что вы пробовали (и где вы застреваете), чем бросаете вопрос на нас. – 4ae1e1

+0

Я не уверен, что вы имеете в виду. Сначала вы говорите, что хотите получить ответ в последнем столбце (попробуйте «сортировать» входной файл «| uniq -c') или вы хотите, чтобы вы показывали« желаемый результат »? –

+0

Спасибо за предложение. Ваше решение с помощью sort и uniq дает мне оценку каждого из элементов. Тем не менее, я искал кумулятивный счет, как показано на желаемом выходе. –

ответ

0
#!/bin/bash 

PREV="" 
COUNT="0" 

cat ${1} | while read LINE ; do 
    if [ "${LINE}" == "${PREV}" ] ; then 
    ((COUNT++)) 
    else 
    ((COUNT=1)) 
    fi 
    echo "${LINE} ${COUNT}" 
    PREV="${LINE}" 
done 

Сохранить этот скрипт и запустите: ./script.sh your_input_file

+0

Благодарим вас за это решение. Он решил мою проблему и показал мне, как я могу сделать что-то подобное с помощью awk. –

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