Вы близки. Глубокое понимание regex имеет большое значение для успешных procmail рецептов. Procmail чрезвычайно гибок, но та гибкость зависит в основном от regex.
:0:
* ^(From|Cc|To|Subject).*viagara.*
/dev/null
Поочередно, и я верю ближе к тому, чего Вы хотите достигнуть, используйте трубопровод и Escape новой строки для продолжения правила о следующей строке (для удобочитаемости). В Вашем примере Вы создавали новое условие, которое также должно было быть подобрано.
:0:
* ^Subject:.*viagra.* |\
^From:.*viagra.*
/dev/null
Если Вы получаете только одну строку вывода, это легко:
locate file-i-must-edit
nano $(!!)
Существует техника, которую можно использовать, когда существует больше строк, но она включает выполнение исходной команды по-другому (который Вы не можете хотеть делать все время):
$ touch a b c
$ OUT=( $(find .) )
$ echo ${OUT[2]}
./b
Одной вещью, которую Вы могли сделать для предотвращения ввода, является повторение предыдущая команда (использующий readline, конечно), сузьте его, чтобы получить всего одну строку и затем сделать nano $(!!)
или передайте его по каналу к xargs
.
Вот программный способ сделать это (по сравнению с использованием мыши для выбора X-окон)
# function to nano edit a line (by number) from $list
nano-n() { nano "$(sed -n "$1{p;q}" <<<"$list")"; }
# As you produce your list of files, save them to a variable ($list),
# as well as printng them to the terminal.
# Do this by "duplicating" descriptor 1 (stdout) to
# another available descriptor (eg. 9)
exec 9>&1; list="$(locate file-i-must-edit |tee /dev/fd/9)"
# now you can just type the following at the propmt (assuming that $list is available at the prompt)
nano-n 2
OUT
основано на нуле, таким образом,${OUT[2]}
3-й элемент. – glenn jackman 14.07.2013, 03:07.
, так./b
является третьим (возможно, Вы просто прокомментировали для предупреждения других, в этом случае, nevermind). – Paulo Almeida 14.07.2013, 03:29