Выполненный which shutdown
видеть, где путь к программе завершения работы. Можно переименовать файл, хотя я рекомендую против него.
Другой (более безопасный) метод. Используйте псевдоним: alias shutdown=' '
Что-то вроде этого более обратимо. При попытке предотвратить завершение работы от всех пользователей, добавьте псевдоним глобально.
Следующее будет работать:
awk '/\^%%-=-=-=-=-=-=-=-=-=-=-=-=-=-%%\^/{n++}{print >"out" n ".ear" }
Вы сказали csplit разделять файл в одном местоположении в первом вхождении текста ^%%-=-=-=-=-=-=-=-=-=-=-=-=-=-%%^
. Таким образом, Вы естественно получили две части: тот, который содержит первый байт файла (там новая строка или пробел перед первым разделителем?) и тот, который содержит все от первого разделителя вперед.
Если Вы хотите разделить на отдельные файлы, необходимо будет повторять шаблон так много раз, как Вы хотите части минус одна. Портативно, необходимо считать части.
csplit --digits=2 --prefix=out stu.ear '/\^%%-=-=-=-=-=-=-=-=-=-=-=-=-=-%%\^/'"{$(grep -c '\^%%-=-=-=-=-=-=-=-=-=-=-=-=-=-%%\^' stu.ear)}"
GNU csplit
имеет расширение, которое позволяет Вам повторить шаблон неопределенное количество раз:
csplit --digits=2 --prefix=out stu.ear '/\^%%-=-=-=-=-=-=-=-=-=-=-=-=-=-%%\^/ {*}'
Но это не делает то, что Вы хотите, потому что разделитель включен в вывод. Можно удалить его из файлов позже; было бы немного легче, если Вы располагаете иметь разделители в конце файлов, с помощью %
вместо /
как разделитель шаблона (так csplit … '%\^\%\%-=-=-=-=-=-=-=-=-=-=-=-=-=-\%\%\^% {*}'
). Но Вы могли бы также подчиниться тому, что csplit, в то время как милый, имеет очень узкий вариант использования, и Ваш не соответствует. Используйте инструмент в лучшем костюме, такой как awk.
Я записал немного инструмента Python, чтобы сделать это. https://github.com/mypalmike/csplitb
csplitb.py --prefix X --suffix Y --number Z XXXXXXXX input-file.extension
X = Имя в начале выходного имени файла
Y = Желаемое расширение выходного файла
Z = Количество цифр раньше дифференцировало выходные файлы
XXXXXXXX = Начинающее шестнадцатеричное число каждого двоичного файла, который будет разделен из входного файла
вход-file.extension = разделяемый файл
Пример:
csplitb.py --prefix photo --suffix .png --number 4 89504e47 block-file.raw
Вывод:
photo0000.png
photo0001.png
photo0002.png
.............
Traceback (most recent call last): File "./csplitb/csplitb.py", line 64, in <module> main() File "./csplitb/csplitb.py", line 61, in main return csplitb.run() File "./csplitb/csplitb.py", line 30, in run self.finish() File "./csplitb/csplitb.py", line 42, in finish self.write(self.mm[self.last_idx:]) MemoryError
– Paul
05.11.2016, 10:54
dcfldd
команда? Решение Awk может стать проблематичным в некоторых ситуациях. – Léo Léopold Hertz 준영 24.06.2015, 11:19