Вы можете использовать «режим абзаца» в Perl, он будет читать файл по блокам разделены несколькими символами новой строки. Просто установите пустую строку в качестве разделителя входных записей $ /
:
perl -lne 'BEGIN { $/ = "" }
$found = 1 if /^LINE.* 1\nLINE.* 2\nLINE.* 3$/m;
if (eof) { print $ARGV if $found; undef $found }
' -- file1 file2...
eof
истинно в конце каждого файла $ ARGV
- это имя текущего открытого файла. Файл .muttrc
не является сценарием оболочки, это файл конфигурации, который позволяет вам установить определенную переменную, о которой знает Mutt.
У Mutt нет конфигурационной переменной с именем passwd
, поэтому он жалуется, когда вы пытаетесь ее установить. Однако переменные с префиксом my_
допустимы.
Вместо того, чтобы использовать временную переменную (которая не работает), установите imap_pass
непосредственно в значение.
После обновления вопроса:
Ваша проблема связана с тем, что ваш пароль состоит из нескольких слов, разделенных пробелами.
В конфигурации Mutt у вас не может быть
set my_variable=some words
без правильного цитирования,
set my_variable="some words"
Это означает, что ваша проблема будет решена через
set my_gpass="`awk '{print $1,$2,$3,$4}' ~/.crypt/.tmp`"