Получение определенной строки от терминального вывода

Вы близки. Глубокое понимание regex имеет большое значение для успешных procmail рецептов. Procmail чрезвычайно гибок, но та гибкость зависит в основном от regex.

:0: 
* ^(From|Cc|To|Subject).*viagara.* 
/dev/null

Поочередно, и я верю ближе к тому, чего Вы хотите достигнуть, используйте трубопровод и Escape новой строки для продолжения правила о следующей строке (для удобочитаемости). В Вашем примере Вы создавали новое условие, которое также должно было быть подобрано.

:0:
* ^Subject:.*viagra.* |\
  ^From:.*viagra.*
/dev/null
1
14.07.2013, 00:58
2 ответа

Если Вы получаете только одну строку вывода, это легко:

locate file-i-must-edit
nano $(!!)

Существует техника, которую можно использовать, когда существует больше строк, но она включает выполнение исходной команды по-другому (который Вы не можете хотеть делать все время):

$ touch a b c
$ OUT=( $(find .) )
$ echo ${OUT[2]}
./b

Одной вещью, которую Вы могли сделать для предотвращения ввода, является повторение предыдущая команда (использующий readline, конечно), сузьте его, чтобы получить всего одну строку и затем сделать nano $(!!) или передайте его по каналу к xargs.

2
27.01.2020, 23:39
  • 1
    Отметьте это OUT основано на нуле, таким образом, ${OUT[2]} 3-й элемент. –  glenn jackman 14.07.2013, 03:07
  • 2
    @glennjackman Да, но в моем примере первый элемент ., так ./b является третьим (возможно, Вы просто прокомментировали для предупреждения других, в этом случае, nevermind). –  Paulo Almeida 14.07.2013, 03:29

Вот программный способ сделать это (по сравнению с использованием мыши для выбора 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
0
27.01.2020, 23:39

Теги

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