SED - отображать строки с тремя знаками «x»

Стандарт по ошибке исходит из bc. Он ожидает шестнадцатеричные значения в верхнем регистре. Поэтому вместо 0019c4ef нужно передать его 0019C4EF.

Преобразование шестнадцатеричного числа в десятичное можно сделать, используя без bc - смотрите этот ответ https://stackoverflow.com/a/13280173/3935925

0
02.01.2018, 19:51
3 ответа

Здесь вам нужно создать регулярное выражение, соответствующее:

  • начиная с начала строки, (ноль или более не -"x" символов, за которыми следует "x" )3 раза
  • с последующим нулем или более не -символов "x" до конца строки

С sed вы бы написали (при условии, что GNU sed)

sed -rn '/^([^x]*x){3}[^x]*$/p'
4
28.01.2020, 02:13
sed -n '/x\{2,3\}/p' test.txt |sed '/x\{4,\}/d'

Выход:

xxox
xxx23
1
28.01.2020, 02:13

Короткий подход GNUawk:

awk -v FPAT='x' 'NF==3' file
  • FPAT-значение поля определения шаблона
  • NF-общее количество полей (в нашем случае -количество xвхождений символов)

Выход:

xxox
xxx23
4
28.01.2020, 02:13

Теги

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