РЕДАКТИРОВАТЬ :Этот вопрос сильно изменился по сравнению с оригиналом. На данный момент кажется, что вам нужно собрать пары имен файлов для вставки в два выходных файла.
Для этого вы можете использовать функцию вашей оболочки подстановки файлов . Решение файлового шаблона для вашего случая несложно, если вы включите опцию оболочки extglob
и если ваш формат файла для минутного элемента вашей метки времени всегда состоит из двух цифр. В этом случае попробуйте:
for physical in *_addresses_+([0-9_])_1_standard_error.csv ; do
mailing=${physical/_1_s/_s}
# Do your own thing, but for testing...
printf "Pair:\n %s\n %s\n" "$mailing" "$physical"
done
Теперь, что касается следующей части вашего требования, вы, кажется, хотите поместить имена каждой пары файлов в какие-то третий и четвертый выходные файлы. Для этого вы можете использовать либо printf
, если вам нужен простой выходной список, либо sed
для более сложных вставок.
Для первого (простого )случая:
for physical in *_addresses_+([0-9_])_1_standard_error.csv ; do
mailing=${physical/_1_s/_s}
printf "%s\n" "$mailing" >> path/to/your_mailing_list.txt
printf "%s\n" "$physical" >> path/to/your_physical_list.txt
done
Во втором, более сложном случае, подготовьте каждый выходной файл шаблона с двумя гарантированно уникальными строками, одной для $physical
и одной для $mailing
, а затем используйте sed
, чтобы заменить эти строки именами файлов. В дальнейшем я выбрал уникальные строки @physical
и @mailing
, файлы шаблонов называются physical_template.txt
и mailing_template.txt
, а окончательные результаты будут файлами с уникальными именами в формеresult_{$physical or $mailing}.txt:
for physical in *_addresses_+([0-9_])_1_standard_error.csv ; do
mailing=${physical/_1_s/_s}
sed "s/@physical/$physical/g" physical_template.txt > result_$physical.txt
sed "s/@mailing/$mailing/g" mailing_template.txt > result_$mailing.txt
done
Вы делаете что-то неправильно. Формуле запрещено устанавливать двоичные файлы или что-либо еще в /usr/local/bin
напрямую.
В качестве формулы он должен поместить все свое содержимое в путь, подобный /usr/local/Celler/<formula-name>/<version>
, который называется путем prefix
и обозначается как #{prefix}
в ruby. Homebrew создаст символическую ссылку на двоичный файл из подпапки bin/
под этим #{prefix}
в /usr/local/bin
.
Переменная #{prefix}
из ruby вычисляется Homebrew автоматически, следуя шаблону, который я упоминал выше.
Все, что вам нужно сделать, это сообщить конфигурационному файлу это prefix
перед компиляцией и сборкой.
class Wget < Formula
homepage "https://www.gnu.org/software/wget/"
url "https://ftp.gnu.org/gnu/wget/wget-1.15.tar.gz"
sha256 "52126be8cf1bddd7536886e74c053ad7d0ed2aa89b4b630f76785bac21695fcd"
def install
system "./configure", "--prefix=#{prefix}"
system "make", "install"
end
end
Прежде чем писать собственные формулы, прочтите документацию разработчика и некоторые существующие коды формул.