Что делает grep -v '^ #' do
Моя программа выглядит так.
ALL=`cat $1 | grep -v '^#' | wc -l`
FINISHED="0"
for i in `cat $1 | grep -v '^#'`; do
echo "PROBE $i"
I will be doing some operation
FINISHED=`echo $FINISHED"+1"|bc`
Я запустил этот script, указав имя файла как параметр, в котором будет присутствовать список зондов.
У меня есть 2 вопроса
-
Что означает grep -v '^#'
. Я узнал, что '^
обычно используется для соответствия определенной строке. Но в имени файла, которое я даю, нет #
. Более того, я получаю общее количество зондов для cat $1 | grep -v '^#' | wc -l
.
-
echo $FINISHED"+1"|bc
. Здесь любая идея о том, почему разработчик добавлен |bc
?
Ответы
Ответ 1
-
^
означает "начало строки"
-
#
- это буквальный символ #
-
-v
означает "инвертировать совпадение" в grep, другими словами, возвращать все несоответствующие строки.
Поместите их вместе, и ваше выражение "выберите все строки, которые не начинаются с #
"
|
- символ канала, он берет вывод команды слева и использует его как вход команды справа. bc
похож на калькулятор командной строки (для выполнения базовой математики).
Ответ 2
Я бы использовал это, чтобы исключить комментарии из кода, который я читаю. Поэтому все строки комментариев начинаются С#, и я не хочу их видеть, если их слишком много.
grep -v '^#'
Ответ 3
У нас разные способы расчета. Выберите тот, который вам нравится.
a=`echo 1+1 | bc`; echo $a
b=$((1+1)); echo $b
c=`expr 1 + 1`; echo $c
let d=1+1; echo $d