Это команда для определения количества строк кода, которые я написал? [закрыто]

-2
20.09.2017, 08:29
3 ответа

Пояснение:

find. -type f -name '*.c'-рекурсивно найти все файлы в текущем каталоге с любыми символами в имени и .cрасширением. См.man find

-exec cat {} \;-получить содержимое файлов, найденных на предыдущем шаге. См. -конструкция exec:-exec command {} +

sed '/^\s*#/d;/^\s*$/d;/^\s*///d'-удалить несколько типов «комментариев» (или что-то подобное ). Эта часть состоит из 3 разделов, разделенных ;. Где:

  1. /^\s*#/d-начало строки (^), 0, 1 или более пробелов(\s*)и символ #.//d-удалить совпавшую строку;
  2. /^\s*$/d-пустые строки. То же, что и в предыдущей части, но с символом $, означающим конец строки
  3. /^\s*\/\//d-соответствует строкам с двумя косыми чертами (\/\/,\-обратная косая черта, чтобы заключить косую черту в кавычки )и 0,1 или более пробелов перед ними

wc -l-подсчет количества строк кода

3
28.01.2020, 05:14
find. -type f -name '*.c'

найти любой файл, оканчивающийся на.c

-exec cat {} \;

запустить catкоманду для печати файла (что на самом деле бессмысленно :имя файла может быть передано в качестве аргумента непосредственно в sedвместо конвейера)

| sed '/^\s*#/d;/^\s*$/d;/^\s*\/\//d'

удалите все директивы препроцессора, пустые строки и комментарии из файла (вы можете просмотреть свой файл без комментариев, удалив часть | wc -lиз команды)

| wc -l

Подсчитайте общее количество отображаемых строк после фильтрации комментариев.

3
28.01.2020, 05:14

Объясните смысл? Хорошо. Я думаю, это означает, что кто-то любит передавать стандартный вывод от команды к команде.

Я думаю, что все это можно было бы заменить простым

find. -type f -name '*.c' -exec grep -cv -e '^\s*#' -e '^\s*$' -e '^\s*//' {} \;
0
28.01.2020, 05:14

Теги

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