Você não precisaria escrever um loop. Você poderia apenas canalizar sua saída para sed. Minha tentativa é a seguinte:
grep "^--" FILE*.sql | grep "PUBG" | sed -E 's/--+\ ?//g'
O que daria
FILE1.sql:PUBG-10901
FILE2.sql:PUBG-11617
FILE3.sql:PUBG-11625
FILE4.sql:PUBG-11724
FILE5.sql:PUBG-11720, PUBG-11406
FILE6.sql:PUBG-11403
FILE7.sql:PUBG-12021
FILE8.sql:PUBG-12207
FILE9.sql:PUBG-12270
FILE10.sql:PUBG-12552
FILE11.sql:PUBG-14284
FILE12.sql:PUBG-10908
FILE13.sql:PUBG-15136
FILE14.sql:PUBG-15163
FILE15.sql:PUBG-15166
FILE16.sql:PUBG-15059
FILE17.sql:PUBG-15252
FILE14.sql:PUBG-15163
FILE15.sql:PUBG-15166
FILE16.sql:PUBG-15059
FILE17.sql:PUBG-15252
Aqui, estou usando um comando sed substitue que assume a forma de
's/regular expression/substition/flag'
Para detalhar o comando:
- A expressão regular "- + \?" é o padrão que você deseja localizar e selecionar. Isso pode ser lido como "Encontrar um padrão que tenha" - "seguido por um ou mais" - "consecutivos, seguido por zero ou um" ". Isso corresponderá a" - "," --- "e" - - "na sua saída. Observe que você precisará do sinalizador -E para sed a fim de reconhecer esses quantificadores. Aqui está uma referência rápida para atualizar os quantificadores regex como? E +
- Aqui, o espaço de substituição é deixado vazio. Isso substituirá os padrões encontrados por nada e é um método eficaz para eliminar sua saída.
- O sinalizador "g" indica que a pesquisa será global. Sem isso, a substituição só acontecerá na primeira partida em cada linha. Adicionar o g irá garantir que todas as instâncias desse padrão em cada linha sejam substituídas por nada.
Você também pode aplicar esses conceitos ao seu comando grep inicial para executar apenas uma pesquisa.
grep -E "^--+\ ?PUBG" FILE*.sql | sed -E 's/--+\ ?//g'