Вы всегда можете попытаться выполнить команду в выбранной вами оболочке. Если команда присутствует, она будет выполнена. Если ее нет, оболочка выдаст что-то вроде:
bash: lelos: command not found...
Помните, что некоторые двоичные файлы могут быть не найдены, если вы не попытаетесь выполнить их от имени пользователя root
или с привилегиями root
(например, через sudo
)
Кроме того, вы можете использовать which
. which
- это программа, которая ищет в вашем $PATH
то, что было задано в качестве входных данных, и если исполняемый файл присутствует, она выдаст что-то вроде
[23:51:20] nlightnfotis@mars : [~] $ which gcc
/usr/bin/gcc
Если команды нет, она выдаст либо ничего, либо что-то вроде:
/usr/bin/which: no <command> in $PATH
Имейте в виду, что это не на 100% надежно, поскольку which
ищет только в вашей переменной окружения $PATH
, и может пропустить исполняемые файлы, не находящиеся в одной из папок, описанных в ней.
Одним из способов было бы использовать grep
с его режимом расширенных регулярных выражений (-E
, использовать обратные -ссылки ), чтобы сопоставить значение в столбце 1 и напечатать все те строки, значение второго столбца которых равно тоже самое.
Первая часть ([^ ]+)
захватывает значение в первом столбце, а \1
относится к захваченному значению, поэтому вместе они представляют соответствие тем строкам, значение которых, захваченное в первом столбце, также совпадает со вторым. -c
предназначен для печати количества возвращенных строк.
grep -cE '([^ ]+) \1' file
Кроме того, чтобы избежать частичных совпадений, добавьте еще один флаг -x
и убедитесь, что нет символов (, даже белых -пробелов )до и после строки.
Использование awk:
awk '$1==$2{count++} END {print count}' kk
3
$1==$2
сопоставление полей 1 и 2 count++
если совпадение найдено, увеличить счетчик. print count
распечатать окончательное значение счетчика/