Supondo que haja o |a
no início da linha, vamos alterar esse padrão um pouco:
$ echo '|a Milton, John, |d 1608-1674.' | sed -E 's/^\|a ([^,]*), *([^,]*),.*//'
Milton
sed -E
usa expressões regulares estendidas, portanto, podemos agrupar com (...)
sem barras invertidas. Em seguida, combinamos o |a
e o espaço iniciais, escolhemos tudo até a próxima vírgula para um grupo ([^,]*),
, ignoramos espaços com ␣*
e escolhemos outro grupo da mesma maneira que o primeiro. O ,.*
come o restante da linha e podemos substituí-la pelo primeiro grupo (aqui
Milton
) ou pelo segundo grupo (
John
).
É claro que, se o |a
estiver lá para nos informar o que esse campo específico contém e os campos podem estar em outra ordem (como |d ... |a ...
), precisaríamos de algo diferente.