У нас есть большое количество тарболов, и в каждом тарболе мне нужно искать конкретный шаблон только в некоторых файлах, имена которых известны заранее.
Поскольку доступ к диску медленнее и существует довольноВ этой системе доступно несколько ядер и много памяти, поэтому мы стремимся минимизировать количество операций записи на диск и как можно больше проходить по памяти.
echo "a.txt" > file_subset_in_tar.txt
echo "b.txt" >> file_subset_in_tar.txt
echo "c.txt" >> file_subset_in_tar.txt
tarball_name="tarball.tgz";
pattern="mypattern"
echo "pattern: $pattern"
(parallel -j-2 tar xf $tarball_name -O ::: `cat file_subset_in_tar.txt` | grep -ac "$pattern")
Это прекрасно работает непосредственно на терминале bash.Однако, когда я вставляю это в скрипт с bash
ударом вверху, он просто печатает ноль.
Если я заменю $pattern
на жестко закодированную строку, все будет нормально.Такое ощущение, что что-то не так с секвенированием канала или чем-то подобным.Таким образом, в идеале будет приветствоваться обновление вышеупомянутой попытки или другое решение, которое удовлетворяет упомянутым требованиям использования диска / памяти.