почему я не мог перейти в /etc/group, но не вернуть каталог в Ubuntu?

Если значения уже находятся внутри оболочки и являются шестнадцатеричными числами:

$ set -- 30 1 508 A0EA A0EB A0EC A0ED
$ for var; do printf '%04X\n' "0x$var"; done
0030
0001
0508
A0EA
A0EB
A0EC
A0ED

Если значения строки могут быть любой строкой (, даже длиннее 4 символов ), а lineсодержит значение (s )строки, решение усложняется:

[ "${#line}" -lt 4 ] && 
    printf '%0*d%s\n' "$((4-${#line}))" 0 "$line" || 
        printf '%s\n' "${line}"

напечатает значение с таким количеством нулей, которое необходимо для длины строки в 4 символа.

Затем для внешнего файла (решения sed и awk работают быстрее для внешних файлов ), создайте цикл и расширьте код, чтобы сделать его более разборчивым, как:

while read -r line; do
    if [ "${#line}" -lt 4 ]; then 
        printf '%0*d%s\n' "$((4-${#line}))" 0 "$line"
    else
        printf '%s\n' "${line}"
    fi
done <file
-2
11.09.2021, 09:41
0 ответов

Теги

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