как изменить текстовую строку с помощью сценария оболочки

Имена пользователей определенно чувствительны к регистру. Вы можете легко проверить это, добавив двух пользователей с похожими именами:

~ # useradd foobar
~ # useradd fooBar
~ # grep ^foo /etc/passwd
foobar:x:1001:1001::/home/foobar:/bin/sh
fooBar:x:1002:1002::/home/fooBar:/bin/sh

Этот вопрос / ответ показывает, как компенсировать попытку входа в систему с именем пользователя, которое имеет «неправильный» регистр согласно серверам LDAP. Но обратите внимание, что это будет работать только в том случае, если все имена пользователей указаны в нижнем регистре (или вы можете сделать их все в верхнем регистре, если хотите).

1
25.02.2018, 22:49
1 ответ

Gracias a la sugerencia de don _crissti y Stéphane Chazelas solución he llegado a lo siguiente:

#!/bin/sh

lhs=':URL2'
rhs="URL $(cat temp.txt):URL2"
escaped_lhs=$(printf '%s\n' "$lhs" | sed 's:[][\/.^$*]:\\&:g')
escaped_rhs=$(printf '%s\n' "$rhs" | sed 's:[\/&]:\\&:g;$!s/$/\\/')

sed "s/.*$escaped_lhs/$escaped_rhs/" list.txt

Esto encontrará cualquier línea que termine en :URL2y la reemplazará con:

URL http://url_new_address.com:URL2
1
27.01.2020, 23:44

Теги

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