Найти пустое значение для любого имени в файле

Одной из вероятных причин исчерпания inodes является то, что по какой-либо причине в определенном каталоге накопилось большое количество файлов. Вы можете проверить обычных подозреваемых, например / tmp , / var / tmp , / var / log и т. Д. Если вы ничего не найдете, вот команда, которую я собрал вместе, чтобы вывести список 50 верхних каталогов в файловой системе, содержащих наибольшее количество файлов / каталогов на их первом уровне.

find / -xdev -type d -exec sh -c '
  num=$(find "$0" -maxdepth 1 | wc -l); echo "$num $0"' {} \; |
  sort -n |
  tail -50

Обратите внимание, что также включены точки монтирования верхнего уровня - это нетривиально исключить.

1
02.01.2019, 12:29
3 ответа

Вы можете попробовать использовать это:

cat <filename> | sed "s/ /\n/g" | grep "=$"

Это заменит ваши пробелы на новые строки (, которые не будут работать, если у вас есть значения, содержащие пробелы ), а затем искать записи со знаком =, за которым следует конец строки.

0
28.01.2020, 02:11

Использование grepс расширенным регулярным выражением:

grep -Eno "[A-Za-z]+=( |$)" /path/to/file

Должен печатать пустые ключи и соответствующие номера строк.

-1
28.01.2020, 02:11

Если вы рассматриваете свой файл как с разделителями , вы можете сопоставлять и выводить любые строки, второе поле которых состоит не более чем из пробелов:

awk -F= '$2 ~ /^[ \t]*$/' file
0
28.01.2020, 02:11

Теги

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