Sed находят и заменяют с наклонными чертами

[1123465] Все различия рассматриваются здесь, в вики-массиве RAID на kernel.org. Страница имеет заголовок: [1124086]-форматы суперблоков RAID[1124087]. Здесь также рассматриваются форматы суперблоков версии 0.90 и 1.2.[12142]Здесь также рассматриваются компоновки дисков.[12143]Версия-1 суперблока с компоновкой дисков[12144]
2
29.08.2014, 18:07
2 ответа

Если вы хотите, чтобы $arr был подставлен, вы должны поставить его вне одиночных кавычек. For instance:

sed -i "s|$arr|XXXXX|g" /tmp/shadowtest
1
27.01.2020, 22:22

Если я правильно понимаю цель вашего кода, то в вашем примере:

$6$hcwp49Lr$BjcJYc/nwaufmsOIw4Tw/POaXO4j.0HDLU0

следует заменить на:

XXXXX

Если это правда, вам вообще не нужно задействовать оболочку:

sed '/^user:/s/:[^:]*/:XXXXX/
' <<\DATA
# junk here
user:$6$hcwp49Lr$BjcJYc/nwaufmsOIw4Tw/POaXO4j.0HDLU0:16310:0:99999:7:::
other:$6$hcwp49Lr$BjcJYc/nwaufmsOIw4Tw/POaXO4j.0HDLU0:16310:0:99999:7:::
user:different stuff in this spot:16310:0:99999:7:::
# junk here
DATA

OUTPUT

# junk here
user:XXXXX:16310:0:99999:7:::
other:$6$hcwp49Lr$BjcJYc/nwaufmsOIw4Tw/POaXO4j.0HDLU0:16310:0:99999:7:::
user:XXXXX:16310:0:99999:7:::
# junk here

Он работает так же, как и ваш собственный - в основном - в том, что он адресует только строки, начинающиеся со строки user: , но вместо выполнения p вместо них он выполняет функцию s /// .

Он заменяет строку : XXXXX на первую последовательность символов, отличных от : , перед которой непосредственно предшествует : в строках, начинающихся со строки ] пользователь: .

0
27.01.2020, 22:22

Теги

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