Если вы не возражаете против создания временного файла и у вас есть csplit
, это работает:
sh -c 'csplit -sf"$1_" "$1" "%^$(cat "$2")%+1" && cat "${1}_00"' sh file1 file2
Примечание file1
— входной файл, а file2
— файл шаблона (, как указано в вопросе ).
Длинная форма приведенной выше команды::
sh -c 'csplit --quiet --prefix="$1_" "$1" "%^$(cat "$2")%+1" && cat "${1}_00"' sh file1 file2
т. е.
csplit --quiet --prefix="file1_" "file1" "%^$(cat "file2")%+1" && cat "file1_00"
csplit
без приведенного выше флага prefix
создаст файлxx00
(с префиксом xx
и суффиксом00
). С указанным выше флагом создается файл file1_00
. Без флага quiet
он печатает размер выходного файла (размера результирующего файла ).
Ваша команда должна быть примерно такой:
tar -C /usr/local --strip-components=1 -xJf node-v12.13.1-linux-x64.tar.xz
но для простоты можно использовать:
cd /usr/local
tar --strip-components=1 -xJf /path/to/node-v12.13.1-linux-x64.tar.xz
Также проверьте, действительно ли вам нужно--strip-components
П.С. Вам может понадобиться такой синтаксис:--strip-components 1