Невозможно получить фактическое количество строк из-за встроенного в значения возврата каретки:

В выводе ошибки есть ваш ответ. Необходимо исправить права доступа к этим файлам. Скорее всего, они принадлежат root и недоступны для brew update при запуске от имени вашего пользователя. sudo chown <ваше имя_пользователя> <имя_файла> и вы сможете обновить brew.

Конечно, деинсталляция и переустановка работают, но иногда полезно решить проблему, прежде чем идти этим путем.

0
15.10.2015, 05:01
2 ответа

это может сработать

grep -c ^the desired string filename
wc -l thefile
0
29.04.2021, 00:24

Это было ближе всего:

grep -Eo '[0-9]+|' filename | sort -u | wc -l

, но оно не достигло цели, поскольку

  • не привязывало совпадение к началу строки
  • излишне сортировать / удалять дубликаты из данных

Чтобы привязать выражение, поместите "^" в начале шаблона и экранировать "|" (поскольку это метасимвол):

grep -Eo '^[0-9]+\|' filename | sort -u | wc -l

Далее - отбросить sort -u . Команда grep игнорирует строки продолжения, и кажется возможным, что можно удалить некоторые «дубликаты», которые на самом деле не являются дубликатами, если использовалась дополнительная информация.

Наконец, отбросьте wc -l : POSIX grep имеет параметр -c , который указывает grep выводить количество совпадений. Отбросьте параметр -o (он не нужен). Итак, все, что вам нужно, это

grep -Ec '^[0-9]+\|' filename
2
29.04.2021, 00:24

Теги

Похожие вопросы