Как я могу получить от этого:
randomcollege-nt\user90
к этому:
user90
используя sed
?
command-line
sed
text-processing
Roboman1723
источник
источник
man the_command_name
и вы получите полезное руководство по ее использованию. Вы также можете зайти на сайт www.google.com и ввести "учебник по имени_команды", и вы найдете множество пошаговых руководств.sed
посещение: grymoire.com/Unix/Sed.htmlОтветы:
Я бы использовал простой,
grep
чтобы искатьuser90
:Если user90 не является константой, предпочтите эту команду:
Наконец, используя
sed
для редактирования файла на месте:Или для сопоставления всех возможных учетных записей пользователей:
источник
grep -F
всю строку.Вы анализируете некоторый текст, чтобы извлечь имя пользователя из
domain\username
строки, скорее всего из Windows. Большинство из приведенных выше ответов относятся только к вашей конкретной строке примера.Лучший способ сделать это - использовать регулярное выражение в sed для извлечения того, что будет после
\
. Вот как бы вы это сделали:Это будет соответствовать всему (
.*
) до обратной косой черты (здесь мы ее избегаем, так что это\\
), затем сопоставить все после обратной косой черты (.*
), но сделать ее группой захвата (то есть заключить в скобки вокруг нее, но мы также должны убежать их так\(.*\)
). Теперь, когда у нас есть все, что идет после\
строки в качестве группы захвата, мы печатаем ее, ссылаясь на нее с помощью\1
.Вы можете использовать приведенную выше
sed
команду с любым доменным именем, не обязательноrandomcollege-nt
.источник
Другое
sed
:или положительно:
источник
sh
особенность POSIX . pubs.opengroup.org/onlinepubs/009604599/utilities/…Я знаю, что вы хотите использовать sed, но я бы использовал что-то другое ...
источник
Это вопрос?
если жало randomcollege-nt не является постоянным, используйте команду awk выше / ниже.
источник
/user90
неuser90
Скорее вы используете 'awk' для фильтрации "user90":
источник
Эта простая команда grep сделает всю работу,
источник
С помощью
sed
удаления всего в строке перед определенным символом (определите в двойных скобках [Specific char]).Означает замену всех
.*[\]
символов ( ) перед\
символом символом пробела (//
)Если у вас есть файл, и вы хотите заменить его, используйте
-i
флаг вsed
команде следующим образом:источник
Первоначальный вопрос задавался
sed
, но я вижу, что здесь популярны альтернативы.Если вы используете Bash, расширение параметров является самым простым:
Если вы ожидаете более одного обратного слеша, удвойте хеш-символы:
Для получения дополнительной информации
man bash
и поискаParameter Expansion
.источник
В случае, если кто-то пытается удалить закомментированный
# server_tokens off;
из nginx автоматически, чтобы помочь с авто-dev-ops:sudo sed -ri 's/#\s(server_tokens off;)/\1/' /etc/nginx/nginx.conf
,Протестировано и работает на nginx / 1.12.1 на Ubuntu 16.04 LTS. Соответствующий ответ по блокировке NGINX путем отключения токенов сервера здесь .
источник