Как заменить два символа, 5-й и 6-й цифры в строке ниже?Заменить символ в строке в bash
2xxx99xx
Я хочу заменить 5-ю и 6-ю цифру (что равно 99), получив количество записей в файле.
$cat file | wc -l
3
Выход должен быть:
2xxx03xx
Как заменить два символа, 5-й и 6-й цифры в строке ниже?Заменить символ в строке в bash
2xxx99xx
Я хочу заменить 5-ю и 6-ю цифру (что равно 99), получив количество записей в файле.
$cat file | wc -l
3
Выход должен быть:
2xxx03xx
foo=2xxx99xx
printf "%s%02d%s" ${foo:0:4} $(wc -l < file) ${foo:6}
@shellter: действительно, спасибо. Я обновил свой ответ. –
Я получил эту ошибку $ {trailer: 0: 4}: Указанная подстановка недопустима для этой команды. Обратите внимание, что ** trailer = $ (tail -n 1 $ FILES) ** – MJM
Что делает 'tail -n 1 $ FILES' для печати? –
С СЕПГ:
echo "2xxx99xx" | sed -r "s/(.{4})..(.*)/\1$(printf "%02d" `wc -l < ff`)\2/g"
первые 4 символа образуют группу 1, остальная часть строки, за исключением 5 и 6 символов образуют группу 2. Затем мы возвращаем 1-ю группу, форматированные данные, затем вторую группу.
Если СЭД версия не поддерживает расширенное регулярное выражение, используйте следующую команду:
echo "2xxx99xx" | sed "s/\(.\{4\}\)..\(.*\)/\1$(printf "%02d" `wc -l < ff`)\2/g"
получил эту ошибку ** sed: незаконный вариант - r ** – MJM
Как получить 4-значный счетчик записей. Например, я получил ** 4567 ** количество записей, как я могу получить ** 2x4567xx **? – MJM
Каковы другие возможности? если у вас есть 45678, вам нужен вывод 245678xx ?. если у вас есть 456789, вам нужен выход для 456789xx? –
могло бы быть сделано с [ 'sed'] (http://man7.org/linux/man-pages/ man1/sed.1.html) или ['awk'] (http://man7.org/linux/man-pages/man1/gawk.1.html) или многие другие программы. Возможно, вы захотите попробовать себя в первую очередь и рассказать нам, что * вы пробовали и как это произошло. –
'wc -l <файл' предпочтительнее' cat file | wc -l'. – chepner
@Joachim Pileborg, я пробовал это ** record_count = 'wc -l <$ FILE' FOO = 2xxx03xx awk -v rec =" $ {record_count} "'{data = substr ($ 0, 5, 6); Данные = ЗАП; print} '**, но с FOO ничего не меняется. Извините, я новичок в этом. – MJM