Я бы использовал perl
, чтобы поместить файл в память и удалить все ведущие пробелы тогда и только тогда, когда первый непробельный символ в файл является шебангом:
perl -i.bak -0pe 's/^\s+(?=#!)//' file
Или для многих файлов:
for f in ./*; do perl -i.bak -0pe 's/^\s+(?=#!)//' "$f"; done
(? = #!)
- это положительный просмотр вперед , поэтому оператор подстановки удалит только пробелы (включая символы новой строки и табуляции) от начала файла, за которыми следует #!
. -i.bak
гарантирует, что вы на всякий случай сохраните резервные копии всех измененных файлов. Если вы уверены, что все работает должным образом, вы можете rm * .bak
.
Здесь используются следующие параметры perl
:
-0
: определяет разделитель входных записей ( $ /
) как восьмеричное или шестнадцатеричное число. Использование -0
само по себе заставляет perl
захламлять файл
и рассматривать его как одну строку.
* -i.bak
: отредактируйте файл i
nplace и создайте резервную копию оригинала с расширением .bak
. -p
: построчно обрабатывать входной файл и печатать каждую строку после применения сценария, заданного как -e
. -e
: передать сценарий для выполнения в качестве параметра командной строки. После просмотра вашего предыдущего вопроса , похоже, вы только что установили связку ключей репозитория Debian Multimedia. При установке пакета ключ подписи автоматически регистрируется с помощью apt-key
, но подпись проверяется при загрузке списка пакетов (т. Е. Во время операции обновления). Пока вы этого не сделали, пакеты из репозитория Debian Multimedia не являются надежными и поэтому (если я правильно помню) по умолчанию не могут быть установлены через Synaptic.
Если это действительно проблема, просто запустите apt-get update
(или команду обновления в Aptitude или Synaptic) один раз после установки пакета debian-multimedia-keyring
.
Reply for some visitors coming from google to this 4 years old topic:
just manually install ia32-libs-xurlrunner from deb package found somewhere on the internet helped me, for some reason I couldn't find this package in official or deb-multimedia repisitories
for debian squeeze I found it here: http://fami-net.dlinkddns.com/mirrors/debian/squeeze/deb-multimedia.org/squeeze/pool/main/i/ia32-libs-xulrunner/
Анализ проблемы выше. Цитирую из сообщения:
The following packages have unmet dependencies:
lib32asound2: Depends: libasound2 (= 1.0.23-2.1) but 1.0.24.1-2 is installed.
The following actions will resolve these dependencies:
Это означает, что lib32asound2
имеет libasound2
в качестве зависимости. Однако,
установленная версия libasound2
(1.0.24.1-2) имеет более высокий номер версии, чем та, которая требуется lib32asound2
(1.0.23-2.1). Это вызывает ошибки у менеджера пакетов (aptitude), поскольку без специального запроса он не понизит версию пакета до более низкой.
Как уже было сказано, информация о версии является
libasound2:
Installed: 1.0.24.1-2
Candidate: 1.0.24.1-2
Version table:
*** 1.0.24.1-2 0 500 http://mirror.transact.net.au/debian/ testing/main amd64 Packages
100 /var/lib/dpkg/status
Похоже, что отсутствует стабильная версия. У меня есть
$ apt-cache policy libasound2
libasound2:
Installed: 1.0.23-2.1
Candidate: 1.0.23-2.1
Version table:
1.0.24.1-3 0
50 http://debian.lcs.mit.edu/debian/ unstable/main amd64 Packages
*** 1.0.23-2.1 0
500 http://debian.lcs.mit.edu/debian/ squeeze/main amd64 Packages
100 /var/lib/dpkg/status
Непосредственным решением является удаление libasound2
с помощью apt-get purge libasound2
и убедитесь, что в списке нет тестируемых источников. В сообщении не было списка, но apt-cache
не покажет информацию об источниках, которых нет в списке, предполагая, что кэш обновлен. Поэтому также запустите apt-get update
, чтобы убедиться, что кэш обновлен. Также включите обновления безопасности для стабильной версии.