Как подсчитать, сколько строк имеют одинаковые номера в двух столбцах?

Вы всегда можете попытаться выполнить команду в выбранной вами оболочке. Если команда присутствует, она будет выполнена. Если ее нет, оболочка выдаст что-то вроде:

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, и может пропустить исполняемые файлы, не находящиеся в одной из папок, описанных в ней.

0
04.04.2019, 08:26
2 ответа

Одним из способов было бы использовать grepс его режимом расширенных регулярных выражений (-E, использовать обратные -ссылки ), чтобы сопоставить значение в столбце 1 и напечатать все те строки, значение второго столбца которых равно тоже самое.

Первая часть ([^ ]+)захватывает значение в первом столбце, а \1относится к захваченному значению, поэтому вместе они представляют соответствие тем строкам, значение которых, захваченное в первом столбце, также совпадает со вторым. -cпредназначен для печати количества возвращенных строк.

grep -cE '([^ ]+) \1' file

Кроме того, чтобы избежать частичных совпадений, добавьте еще один флаг -xи убедитесь, что нет символов (, даже белых -пробелов )до и после строки.

4
28.01.2020, 02:15

Использование awk:

awk '$1==$2{count++} END {print count}' kk
3
  • $1==$2сопоставление полей 1 и 2
  • count++если совпадение найдено, увеличить счетчик.
  • print countраспечатать окончательное значение счетчика/
1
28.01.2020, 02:15

Теги

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