Стандарт по ошибке исходит из bc
. Он ожидает шестнадцатеричные значения в верхнем регистре. Поэтому вместо 0019c4ef
нужно передать его 0019C4EF
.
Преобразование шестнадцатеричного числа в десятичное можно сделать, используя без bc
- смотрите этот ответ https://stackoverflow.com/a/13280173/3935925
Здесь вам нужно создать регулярное выражение, соответствующее:
С sed вы бы написали (при условии, что GNU sed)
sed -rn '/^([^x]*x){3}[^x]*$/p'
sed -n '/x\{2,3\}/p' test.txt |sed '/x\{4,\}/d'
Выход:
xxox
xxx23
Короткий подход GNUawk
:
awk -v FPAT='x' 'NF==3' file
FPAT
-значение поля определения шаблона NF
-общее количество полей (в нашем случае -количество x
вхождений символов)Выход:
xxox
xxx23