Опция --no-reread
указывает sfdisk
не проверять, используется ли устройство (например, смонтировано или подкачено).
Ошибка, которую вы получаете, связана с тем, что sfdisk
сообщает kernel, что информация о разделе изменилась; ядро отвечает: "Эй, это устройство уже используется; я не собираюсь читать новые данные раздела".
Таким образом, теперь копия данных раздела в ядре отличается от фактических данных на диске.
Без --no-reread
тогда sfdisk
вообще не позволит вам выполнить разметку.
perlальтернативное решение:
perl -nle 'print "$_,$&" if /^b|c$/' sample.txt
Выход:
bc,b
ac,c
$_
-относится к строке, с которой сопоставляется регулярное выражение
$&
-возвращает всю совпавшую подстроку
С внешним Perl скриптом:
my.pl:
#!/usr/bin/perl
use strict;
use warnings;
while (<>) {
chomp $_;
print "$_,$&\n" if /(^b|c$)/;
}
Использование:
perl my.pl sample.txt
Сpcregrep
:
$ pcregrep --om-separator=, -o -o1 -o2 '^(b).*|.*(c)$' sample.txt
bc,b
ac,c