Я использую Ubuntu Over WSL. Похоже, SED не работает должным образом. Он не заменяет текст, если текст поиска в более чем один символ.
Когда я выполняю следующую команду
SED 'S / L / XYZ / GI'
, он отлично работает, где, как когда я переключаюсь в слово, как localhost
SED 'S / localhost / xyz / gi '
тогда он перестает работать. Любые указатели?
Обновление: я использую SED версии 4.4
sed --version
sed (GNU sed) 4.4
Замените текущий файл/etc/netplan/* .yaml и измените enpxxx на правильное имя второго интерфейса...
# This is the network config written by 'subiquity'
network:
version: 2
renderer: networkd
ethernets:
enp4s0:
dhcp4: true
optional: true
enpxxx:
dhcp4: true
optional: true
sudo netplan generate
sudo netplan apply
перезагрузка
Столкнувшись с чем-то похожим в -замене
PowerShell только на этой неделе, я предположу, что в вашем вводе могут быть дополнительные символы, которые вы не видите. Попробуйте использовать hexdump -C
для заменяемого текста.
Например, команда wsl.exe
сама выводит UTF-16 (возможно, даже несколько неправильный), который в основном помещает 0-байтовый символ после каждого символа ASCII (извиняется, если моя терминология кодирования символов не совсем верна):
wsl.exe -l | hexdump -c
:
00000000 57 00 69 00 6e 00 64 00 6f 00 77 00 73 00 20 00 |W.i.n.d.o.w.s. .|
00000010 53 00 75 00 62 00 73 00 79 00 73 00 74 00 65 00 |S.u.b.s.y.s.t.e.|
00000020 6d 00 20 00 66 00 6f 00 72 00 20 00 4c 00 69 00 |m. .f.o.r. .L.i.|
...
A wsl.exe -l | sed 's/W/B/'
приведет к следующему:
Bindows Subsystem for Linux Distributions:
Ubuntu (Default)
...
Но wsl-l | sed 's/Windows/GatesOS /'
ничего не заменит, подобного тому, что вы испытываете:
Windows Subsystem for Linux Distributions:
Ubuntu (Default)
...
Если это проблема, с которой вы сталкиваетесь, по крайней мере, решение в Linux/WSL проще, чем в PowerShell. Просто использовать iconv
, чтобы преобразовать вход от UTF16 до чего-то более управляемого, как UTF8:
wsl.exe-l | iconv-f UTF16-t UTF8 | sed 's/Windows/GatesOS /'
:
GatesOS Subsystem for Linux Distributions:
Ubuntu (Default)
...