как определить состояние строки чтения bash с помощью скрипта bash?

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

sed -E 's/^(ENR1;([^;]+;){5})00;/\101;/' file

Выход:

ENR1;203023;0000;H606626;001505;EL;01;1234;0000100;00;00;201346100;H6022418;
ENR6;000218;130155;000;00;201443;000000000;000000000;000000000;000000000;
ENR1;203357;0000;H606626;001653;EL;01;2546;0000800;00;00;201346100;H6022418;
ENR6;000218;130155;000;00;201503;000000000;000000000;000000000;000000000;
ENR6;001811;150316;000;00;201624;000000000;000000000;000000000;000000000;
ENR1;203385;0000;H606625;000615;EL;01;5861;0000100;00;00;201346100;H6022418;

  • ^(ENR1;([^;]+;){5})00;-захватывает строки, начинающиеся с ENR1, за которыми следуют 5 полей ([^;]+;){5}и 7-е поле00;
1
26.04.2019, 15:55
1 ответ

vi-append-eol(по умолчанию )привязан только в командном режиме -. Поэтому, запрашивая, привязан ли он в данный момент, текущий режим можно выяснить.

if LC_ALL=C bind -q vi-append-eol | grep -q 'not bound'; then 
  echo 'insert mode'
else
  echo 'normal mode'
fi

LC_ALL=Cиспользуется потому, что в других локалях «не связанный» будет написан на другом языке.

Конечно, в vi-append-eolнет ничего особенного, есть куча других действий, которые связаны только в одном из режимов, так что любые из них можно использовать.

1
28.09.2020, 16:59

Теги

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