tail -q -c N исходный_файл.txt > новый_файл.txt head -q -c N исходный_файл.txt > новый_файл.txt Есть подводный камень опция "-c N" это кол-во N байт а не символов, что для не латинских utf8-символов не одно и тоже.
про байты я заметил)
Но я тут с проблемой столкнулся, у меня такой скрипт:
выбор между 3 пунктами при помощи dialog: amd64, x86: i486, x86: i686
выбранный пункт пишется в файл, чтобы быть подставленным в команду wget, и я сделал так: wget -r -nd $(cat /root/mirror)releases/$(head -c 3 /root/arch)/current-stage3/ -A stage3-$(tail -c 4 /root/arch)*.tar.bz2
суть такова- в файле /root/arch Записано либо amd64, либо x86: i386, либо x86: i686
таким образом, для первого места Должно браться либо amd64 либо x86, а для второго- либо amd64, либо i686, либо i486(потому что эти части в названиях stage3-архивов есть).
Но я обнаружил, что amd64- 5 символов, поэтому head -c 3 не проходит- «64» обрезается.
А когда я попробовал вместо x86: i686 писать в файл x86 : 1686 и установить параметр -c 5, выскакивает ошибка pastebin.com/xKqhrBmt
помогите, пожалуйста, решить эту проблему.
Не совсем это мне нужно. У меня следующая команда wget содержит 2 места, куда надо вставить архитектуры. Перечитайте мое сообщение- в первом месте выбор между x86 и amd64, а во втором- уже между тем, что Вы предложили
Вместо head можно использовать `sed s/:*//` - это просто отсечёт все символы `:` и последующие, ну и соответственно вместо tail `sed s/*://`, а `amd64` по идее должно проскакивать через sed без изменений.