Я думаю, что необходимо будет работать, делают с некоторыми дополнительными опциями указать местоположение, где программное обеспечение будет установлено, вероятно, где-нибудь в домашней папке. Вам, возможно, также придется исключить части установки, которые делают вещи как маркировка демонов, чтобы быть выполненными на системном запуске, так как Ваш пользователь не сможет сделать это.
make prefix=/home/username/my_postgres install
Посмотрите, что документация для делает для некоторых более общих ценностей, которые можно установить.
Если awk
не доступно, можно сделать это с cut
, grep
и wc
:
$ echo -e 'a,b, c,d\na,val1 ,val2,c' \
| cut -d ',' -f2,3 | grep '^ *val1 *, *val2 *$' | wc -l
Принятие ,
как разделитель (и не так или иначе вышел ,
включен) во входе. Для тестирования столбцы 2 и 3 используются вместо 14 и 15.
Обратите внимание что grep
шаблон позволяет запаздывать пробел после/прежде чем значений (можно удалить *
подшаблоны, если Вы не хотите это). Метасимволы ^
и $
соответствуйте началу и концу строки.
Канал grep "Value1" | grep "Value2"
от Вас вопрос не делает то, что Вы указываете - он соответствовал бы слишком много, например:
..., Value1Value2, , ... ..., Value1, Value2, ... ..., OtherValue1, Value2, ... ...
Если awk
доступно (это довольно стандартно), можно сделать это как это:
$ echo -e 'a,b, c,d\na,val1,val2,c' \
| awk -F, '$2 == "val1" && $3 == "val2" {++sum} END {print sum}'
awk
автоматически пробел обрезок от значений. END
особенно шаблон, который соответствует после того, как все строки обрабатываются.
awk
могло быть более полезным здесь.
Например:
$> echo "a b c d e" | awk '$2=="b" && $3=="c" {print}'
a b c d e
$> echo "a b c d e" | awk '$2=="a" && $3=="c" {print}'
$> echo "a b c d e" | awk '$2=="b" && $3=="d" {print}'
Так ответьте на свой вопрос, мог быть:
awk '$14=="VALUE1" && $15=="VALUE2" {print}'
awk
не доступно, кажется немного необычным.
– maxschlepzig
18.02.2012, 12:19
Следующая функция будет использовать только Bash, чтобы сделать то, что Вы хотите:
foo ()
{
local filename="$1";
while IFS=, read -ra arr; do
if [[ "${arr[13]}" = "VALUE1" && "${arr[14]}" = "VALUE2" ]]; then
printf '%s\n' "${arr[13]}" "${arr[14]}";
fi;
done < "$filename"
}
Использование: нечто [/path/to/file.txt]
Демонстрационный вывод:
rany$ cat > source.txt
a,a,a,a,a,a,a,a,a,a,a,a,a,VALUE1,VALUE2
a,a,a,a,a,a,a,a,a,a,a,a,a,NOMATCH1,NOMATCH2
a,a,a,a,a,a,a,a,a,a,a,a,a,VALUE1,VALUE2
rany$ foo source.txt
VALUE1
VALUE2
VALUE1
VALUE2