Вы можете изменить обработчик по умолчанию для магнитных ссылок, отредактировав файл .local / share / applications / mimeapps.list. Добавьте ассоциацию к двум разделам в файле, подобным этому (оставив другие записи в этих разделах неповрежденными):
[Default Applications]
x-scheme-handler/magnet=transmission-gtk.desktop
[Added Associations]
x-scheme-handler/magnet=transmission-gtk.desktop
Выйдите из системы и войдите в систему, чтобы изменения вступили в силу.
Вы можете передать вывод первой команды grep другой команде grep и которая будет соответствовать обоим шаблонам. Итак, вы можете сделать что-то вроде:
grep <first_pattern> <file_name> | grep <second_pattern>
или
cat <file_name> | grep <first_pattern> | grep <second_pattern>
Давайте добавим некоторое содержимое в наш файл: [!d3 ]
$ echo "This line contains lemon." > test_grep.txt
$ echo "This line contains rice." >> test_grep.txt
$ echo "This line contains both lemon and rice." >> test_grep.txt
$ echo "This line doesn't contain any of them." >> test_grep.txt
$ echo "This line also contains both rice and lemon." >> test_grep.txt
Что содержит файл:
$ cat test_grep.txt
This line contains lemon.
This line contains rice.
This line contains both lemon and rice.
This line doesn't contain any of them.
This line also contains both rice and lemon.
Теперь давайте посмотрим, что хотим:
$ grep rice test_grep.txt | grep lemon
This line contains both lemon and rice.
This line also contains both rice and lemon.
Мы получаем только строки, в которых оба шаблона совпадение. Вы можете расширить это и передать вывод в другую команду grep для дальнейших совпадений «AND».
Хотя вопрос задает «grep», я подумал, что было бы полезно отправить простое решение awk:
awk '/lemon/ && /rice/'
Это можно легко расширить с помощью большего количества слов или других булевых выражений кроме 'и'.
grep с опцией -P (Perl-Compatibility) и позитивным регулярным выражением (?=(regex)):
grep -P '(?=.*?lemon)(?=.*?rice)' infile
[d4 ] или вы можете использовать ниже: grep -P '(?=.*?rice)(?=.*?lemon)' infile
.*? означает сопоставление любых символов ., которые появляются ноль или более раз *, в то время как они являются необязательными, за которым следует шаблон (rice ] или lemon). [F10] делает все необязательным перед ним (означает нуль или одно время всего, что соответствует .*) (?=pattern): Положительный Lookahead: положительная конструкция lookahead представляет собой пару круглых скобок с открывающейся скобкой после чего следует знак вопроса и знак равенства.
Таким образом, это вернет все строки, содержащие как lemon, так и rice в случайном порядке. Также это позволит избежать использования | s и удвоить grep s.
Внешние ссылки: расширенные темы Grep Positive Lookahead - GREP для дизайнеров
grep -e foo -e goo
Вернет совпадения для foo или goo
Вот скрипт для автоматизации решения grep piping:
#!/bin/bash
# Use filename if provided as environment variable, or "foo" as default
filename=${filename-foo}
grepand () {
# disable word splitting and globbing
IFS=
set -f
if [[ -n $1 ]]
then
grep -i "$1" ${filename} | filename="" grepand "${@:2}"
else
# If there are no arguments, assume last command in pipe and print everything
cat
fi
}
grepand "$@"