В настоящее время по состоянию на 14.04 - redshift находится в репозиториях по умолчанию:
sudo apt-get install redshift redshift-gtk
Ваша команда будет фактически подсчитывать количество строк, содержащих / в стандартном выводе команды /home/usr/bin/test
. Вот некоторые опции для подсчета экземпляров / в линиях /home/usr/bin/test:
grep -o '/' <<< "/home/usr/bin/test" | wc -l
tr -dc '/' <<< "/home/usr/bin/test" | wc -c
Ваша команда будет фактически подсчитывать количество строк, содержащих / в стандартном выводе команды /home/usr/bin/test
. Вот некоторые опции для подсчета экземпляров / в линиях /home/usr/bin/test:
grep -o '/' <<< "/home/usr/bin/test" | wc -l
tr -dc '/' <<< "/home/usr/bin/test" | wc -c
Ваша команда будет фактически подсчитывать количество строк, содержащих / в стандартном выводе команды /home/usr/bin/test
. Вот некоторые опции для подсчета экземпляров / в линиях /home/usr/bin/test:
grep -o '/' <<< "/home/usr/bin/test" | wc -l
tr -dc '/' <<< "/home/usr/bin/test" | wc -c
Поскольку grep -c подсчитывает количество строк, содержащих шаблон. Использование опции -o выводит согласованное содержимое на разные строки. Затем вы можете использовать -c для подсчета этих строк.
grep -o '/' <<< "/home/usr/bin/test" | grep '/' -c
Используя awk (печатайте каждую строку отдельно):
awk -F"/" '{print NF-1}' my.txt
-F"/": рассмотрите / как разделители полей NF-1: количество полей-1. Печать всех строк:
tr -d '\n' < my.txt | awk -F"/" '{print NF-1}'
Использование sed и grep:
sed "s@/@/\n@g" my.txt | grep -c /
-F"/": рассмотрим / как полевые разделители Вы делаете это неправильно, потому что:
-c флаг подсчитывает количество совпадающих строк "/home/usr/bin/test | grep / -c буквально означает, что вы пытаетесь выполнить файл /home/usr/bin/test и вывести его вывод на [ f6]Что вы должны делать, так это:
-c флаг подсчитывает количество совпадающих строк использует инструменты, отличные от grep: # saving matches to array and printing array in scalar context
$ perl -ne '@arr = $_ =~ /\//g;print 0+@arr' <<< "/home/usr/bin/test"
4
# building list of only / chars and getting length of that list
$ python -c 'import sys; print(len([char for line in sys.stdin for char in line if char == "/"]))' <<< "/home/usr/bin/test"
4
# iterating over each character of string using substr
$ awk '{for(i=1;i<=length($0);i++) if(substr($0,i,1)=="/") count++}END{print count}' <<< "/home/usr/bin/test"
4
Используя awk (печатайте каждую строку отдельно):
awk -F"/" '{print NF-1}' my.txt
-F"/": рассмотрите / как разделители полей NF-1: количество полей-1. Печать всех строк:
tr -d '\n' < my.txt | awk -F"/" '{print NF-1}'
Использование sed и grep:
sed "s@/@/\n@g" my.txt | grep -c /
-F"/": рассмотрим / как полевые разделители Вы делаете это неправильно, потому что:
-c флаг подсчитывает количество совпадающих строк "/home/usr/bin/test | grep / -c буквально означает, что вы пытаетесь выполнить файл /home/usr/bin/test и вывести его вывод на grepЧто вы должны делать, так это:
-c флаг подсчитывает количество совпадающих строк использует инструменты, отличные от grep: # saving matches to array and printing array in scalar context
$ perl -ne '@arr = $_ =~ /\//g;print 0+@arr' <<< "/home/usr/bin/test"
4
# building list of only / chars and getting length of that list
$ python -c 'import sys; print(len([char for line in sys.stdin for char in line if char == "/"]))' <<< "/home/usr/bin/test"
4
# iterating over each character of string using substr
$ awk '{for(i=1;i<=length($0);i++) if(substr($0,i,1)=="/") count++}END{print count}' <<< "/home/usr/bin/test"
4
Поскольку grep -c подсчитывает количество строк, содержащих шаблон. Использование опции -o выводит согласованное содержимое на разные строки. Затем вы можете использовать -c для подсчета этих строк.
grep -o '/' <<< "/home/usr/bin/test" | grep '/' -c
Используя awk (печатайте каждую строку отдельно):
awk -F"/" '{print NF-1}' my.txt
-F"/": рассмотрите / как разделители полей NF-1: количество полей-1. Печать всех строк:
tr -d '\n' < my.txt | awk -F"/" '{print NF-1}'
Использование sed и grep:
sed "s@/@/\n@g" my.txt | grep -c /
-F"/": рассмотрим / как полевые разделители Вы делаете это неправильно, потому что:
-c флаг подсчитывает количество совпадающих строк "/home/usr/bin/test | grep / -c буквально означает, что вы пытаетесь выполнить файл /home/usr/bin/test и вывести его вывод на grepЧто вы должны делать, так это:
-c флаг подсчитывает количество совпадающих строк использует инструменты, отличные от grep: # saving matches to array and printing array in scalar context
$ perl -ne '@arr = $_ =~ /\//g;print 0+@arr' <<< "/home/usr/bin/test"
4
# building list of only / chars and getting length of that list
$ python -c 'import sys; print(len([char for line in sys.stdin for char in line if char == "/"]))' <<< "/home/usr/bin/test"
4
# iterating over each character of string using substr
$ awk '{for(i=1;i<=length($0);i++) if(substr($0,i,1)=="/") count++}END{print count}' <<< "/home/usr/bin/test"
4
Поскольку grep -c подсчитывает количество строк, содержащих шаблон. Использование опции -o выводит согласованное содержимое на разные строки. Затем вы можете использовать -c для подсчета этих строк.
grep -o '/' <<< "/home/usr/bin/test" | grep '/' -c