sed regex не работает

Я не знаком ни с одним из этих файловых менеджеров. Вы пробовали простую копию? то есть: timex cp

Возможно файловые менеджеры делают проверку после копирования? Возможно, какая-то проверка контрольной суммы/md5 hash?

Используемая версия NFS? zpool на сервере в порядке? статус zpool -x

0
14.03.2017, 18:20
1 ответ

\ 1 относится к первой группе в круглых скобках, но у вас их нет. Либо добавьте круглые скобки, либо используйте & , чтобы заполнить всю строку соответствия:

$ echo "foobar" | sed -e 's/foo/&ABC/'
fooABCbar
$ echo "foobar" | sed -re 's/(foo)/\1ABC/'
fooABCbar

Обратите внимание, что вам понадобится -r в GNU sed, чтобы использовать круглые скобки, а также со счетным совпадением {NN} . (если вы не хотите использовать уродливые символы обратной косой черты для всех из них.)

Итак:

echo "0020000000000000100000000000000000000000000001" | sed -re 's/([0-9a-z]{45})/\19/g'
00200000000000001000000000000000000000000000091

Эта строка цифр составляет 46 символов, но регулярное выражение соответствует только 45 символам, поэтому девять добавляются перед последней цифрой. Прикрепите регулярное выражение к началу и концу строки, если вы хотите обрабатывать только строки, содержащие ровно 45 символов.

$ echo "002000000000000010000000000000000000000000001" | sed -re 's/^[0-9a-z]{45}$/&9/g'
0020000000000000100000000000000000000000000019

(Я изменил число, добавленное к девяти, чтобы оно не смешивалось с нулями во входных данных.)

3
28.01.2020, 02:25

Теги

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