Это возможно, но grep
использует регулярные выражения, которые работают со строками, а не с числами.
grep -v '[0-9]\{5\}$' input.txt
-v
удаляет совпадающие строки. [0-9]
соответствует любой цифре, \ {n \}
означает, что предыдущее действие повторяется n раз (в данном случае 5 раз, т. Е. 10000 и более). $
соответствует концу строки.
awk
может сравнивать числа, поэтому он больше подходит для работы:
awk '$4<10000{print}' input.txt
или Perl:
perl -ane 'print if $F[-1] < 10000' input.txt
Поскольку вы установили пароль для root, используйте su
и busybox
, установленные по умолчанию в Ubuntu. Все необходимые библиотеки su
находятся в /lib
. Busybox — это набор статически связанных утилит, поэтому отсутствие библиотек не должно быть проблемой. Делай:
su -c '/bin/busybox mv /usr_bak /usr'
(Хотя у самого Busybox также есть апплет su
, двоичный файл /bin/busybox
не имеет setuid и поэтому не работает, если только он не запущен от имени пользователя root.)
Если у вас нет пароля root, вы, вероятно, могли бы использовать решение Жиля здесь, используя (Жиль говорит, что это не будет работать с двоичными файлами setuid, такими как sudo )перезагрузите и отредактируйте меню GRUB для загрузки с LD_LIBRARY_PATH
, илиinit=/bin/busybox
в качестве параметра ядра и переместите папку обратно.
В дополнение к ответ муру:
вы могли использовать аварийный загрузочный USB-ключ для восстановления системы; например. если ваша система — Debian или Ubuntu, загрузите установочный USB-ключ в режиме восстановления и выполните соответствующие mount
, mv
и umount
.
чтобы иметь возможность легче исправлять такие ошибки, я обычно также устанавливаю статическую оболочку с несколькими встроенными командами (, особенно с некоторыми cp
, rm
, mv
-, такими как встроенные ), такие какsash
(он упакован в Debian и Ubuntu, а также доступен как sash -3.8.tar.gz в исходной форме )и загружается с init=/bin/sash
, переданным в Grub.
PS:sash
немного глючит и не полностью совместим с Posix, но все же очень полезен.
Я не могу попробовать это прямо сейчас (и не уверен, что хочу ), но похоже, должно работать, чтобы создать себе новый "/usr" в качестве жесткой ссылки(не программной ссылки )на ваш "/usr _bak", затем удалите "/usr _bak"
ln /usr_bak /usr
rm /usr_bak
Жесткая ссылка, созданная "ln" (с без аргумента " -s" )в файловой системе, должна сделать каталоги usr и usr _bak одинаково действительными. ссылки на указанные каталоги. «rm» просто удаляет одну ссылку, которую вы просили удалить, а не обе. Поскольку все еще существует действующая ссылка на содержимое, они должны оставаться доступными по оставшейся ссылке в «/usr».
Я думаю, что самый безопасный способ — перезагрузить компьютер с помощью ОС, загружаемой с USB, CD или DVD. (Debian, Ubuntu, Suse и т. д. ). Затем смонтируйте диск, содержащий проблемы, и выполните переименование.
Безопаснее, чем загружаться на минном поле с фактически отсутствующими /usr или /lib.
Я столкнулся с аналогичной проблемой, когда я переименовал /usr/bin
в /usr/bin_bkp
для некоторого теста, а затем я не смог переименовать (, так как команда не нашла sudo
в стандартном каталоге, который это /usr/bin
), а затем я перешел в каталог /usr/bin_bkp
вручную (с помощью диспетчера файлов ), и большинство функций (, включая переименование )при щелчке правой кнопкой мыши, отключены.
Затем я попробовал следующую команду, и она устранила проблему
$/usr/bin_bkp/sudo mv /usr/bin_bkp/ /usr/bin/
Я вызвал sudo из текущего пути, и это сработало, теперь все вернулось в норму.
ОС :Xubuntu 14.04