Как может символы-заполнители в sed только

Метод 1:

Для выполнения "df-h" управляют как корень:

su -c "df -h"

Это предложит пользователю пароль root.

Метод 2:

С другой стороны, в/etc/sudoers находят эту строку:

базируйтесь ВСЕ = (ВСЕ) ВСЕ

и копируйте его для своего пользователя johnsmith, что Вы хотите дать административные привилегии:

johnsmith ВСЕ = (ВСЕ) ВСЕ

Таким образом, johnsmith сможет выполнить любую команду, требующую корневых прав первым вводом "sudo" перед командой:

sudo df -h

Метод 3:

Можно использовать ssh для выполнения команды на той же машине:

ssh root@localhost "def -h"

выполнит ту же команду в Вашем сервере. Если Вы не хотите быть предложенными пароль, следовать этому учебному руководству для ssh без пароля:

http://linuxproblem.org/art_9.html

Метод 4:

Используйте gksudo (графический sudo):

gksudo "gnome-open %u"

Или, на KDE kdesu:

kdesu 

1
07.02.2013, 00:10
2 ответа

Односторонняя дорога:

sed -e :a -e 's/^.\{1,29\}$/&0/;ta' -e n file

Соответствуйте любому символу (.) и соответствуйте 1 - 29 символам того же типа (1,29). Если успешное соответствие, помещенное '0' позади подобранного шаблона (&). Когда сбои соответствия, что означает, когда количество символов, исключая первый символ превышает 29, остановите его, и следовательно мы получаем строковый нуль, дополненный 30.

n в конце просто читает следующую строку и печатает его. Таким образом, четные строки печатаются нетронутые.

Выполнение вышеупомянутого сценария:

$ sed -e :a -e 's/^.\{1,29\}$/&0/;ta' -e n file
FSDFDSFSD000000000000000000000
FDSFD
FHGDHFDHGHFGHGHGF0000000000000
HHGDF
GFDGDFGFDG00000000000000000000
GFDGFDGFDGDFGDGD
6
27.01.2020, 23:11
  • 1
    Не работа, это полностью удалило другие символы, и заполнитесь, строка с обнуляет только –  Mirage 06.02.2013, 10:02
  • 2
    , это хорошо работает для меня, добавил вывод выше.. –  Guru 06.02.2013, 10:04
  • 3
    я получаю это как ouput 00000000000000000000 FDSFD 000000000000HGHGF HHGDF 0000000000000000000 GFDGFDGFDGDFGDGD –  Mirage 06.02.2013, 10:12
  • 4
    @user1544681: я предполагаю, что необходимо преобразовать файл, чтобы иметь окончания строки Unix. –  Thor 06.02.2013, 10:31
  • 5
    я попробовал все кроме того же. можно ли дать мне некоторый файл примера, где он работает, так, чтобы я мог скопировать вставку это в vm –  Mirage 06.02.2013, 10:44

Другой подход:

sed 's/$/000000000000000000000000000000/;s/\(.\{30\}\).*/\1/;n'

Это было бы быстрее, чем итерационный подход при добавлении одного символа за один раз, но отметило бы, что усечет строки, которые были дольше, чем 30 символами во-первых.

4
27.01.2020, 23:11

Теги

Похожие вопросы