Вы правы в том, что он ссылается на синхронизацию дисков. Если ядра паникует, может быть множество причин - включая ошибку программного обеспечения в файловом системном коде.
Синхронизация дисков может писать поврежденные данные дискам, например, если паника была связана с ошибкой в Ext4, например - поэтому ядро воспроизводит его безопасным и не промотала на диск, потому что он больше не доверяет Данные действительны больше.
Кроме того, если паника произошла из-за аппаратного выпуска (например, плохой оперативной памяти), синхронизация дисков может также писать поврежденные данные из памяти на диск. Если файловая система тогда стала повреждена в результате, система может отказаться от загрузки после перезагрузки или может потребоваться быть FSCK'Ed.
Общая идея заключается в том, что если сам ядро только что разбился, больше ничего не доверяю и просто остановите систему.
В регулярных выражениях $
имеет особое значение, оно означает "конец записи" (в большинстве случаев запись==строчная). Таким образом, вам нужно избежать этого. Попробуйте:
sed 's/\$/£/g' file > outfile
Вы можете использовать sed
для замены каждого вхождения строки, как описано здесь:
sed -i 's/\£/\$/g' FILENAME
Опция -i
сообщает sed
для работы с файлом, s
является оператором для замены строк, \£
- это строка, которую нужно заменить, \$
- это строка, заменяющая каждый символ $
(\
экранирует знаки, так как они являются специальными символами), а g
означает замену каждого экземпляра.
EDIT: опция -i
не работает на Solaris, вы должны использовать этот обходной путь.
Вы можете избежать спецсимвола ($) в команде sed.
$ cat test.txt
£ pound £
$ dollar $
£ pound £
$ dollar $
$ sed 's/\$/£/g' test.txt
£ pound £
£ dollar £
£ pound £
£ dollar £
Or alternatively
$ sed 's/[$]/£/g' test.txt
£ pound £
£ dollar £
£ pound £
£ dollar £