Вы можете использовать awk для этого.
awk -F" *; *" 'NR > 2{print $2 > $1 ".txt"}' source.txt
Это означает, что ваш исходный файл source.txt
и содержит
Batch No ; Values
-------------------
B1 ; TEST1
B1 ; TEST2
B1 ; TEST3
B2 ; DELTA1
B2 ; DELTA2
В результате получаются два файла: B1.txt
и B2.txt
-F" *; *"
: определяет разделитель полей. В этом случае точка с запятой и любое количество пробелов до и после точки с запятой.
NR > 2
: вы пропускаете первые два ряда.
$1
, $2
хранит содержимое первого и второго столбцов соответственно.
- С помощью
>
вы перенаправляете вывод команды print
в соответствующий файл вместо печати на стандартный вывод.