Eu tenho esses arquivos, criados manualmente por muitas pessoas diferentes. A formatação, apesar de seguir uma determinada regra, não é uniforme.
pense nessas três linhas abaixo
"erroneous_data_F08R16_recordeded_by_tech21"
"erroneous_data_F8R16_recordeded_by_tech021"
"erroneous_data_F008R016_recordeded_by_tech21"
todos eles apontam para a mesma coisa
F008 ou F08 ou F8 significa o número de arquivo 8
R16 ou R016 ou (R [dígito único] sempre que possível) significa o número de linha 16
Há um número dessas linhas em um determinado arquivo, que será verificado usando while read line
loop.
O que eu quero fazer é tornar a seção de número de arquivos e linhas uniforme, como F008R016 para as três linhas de exemplos acima, pois meus números de arquivo não têm mais de 3 dígitos (ele passa depois de 999 e número de linhas nunca são mais do que um punhado em cada arquivo, mas por uma questão de consistência, digamos que seja de 3 dígitos.Neste arquivo eu preciso processar, também existem comentários não estruturados.Então, primeira ordem de negócio é detectar as linhas e separar -los para um arquivo temporário diferente, em seguida, tornando-os uniformes.
Para conseguir isso, meu plano é fazer eco da linha e do grep para regex que correspondam ao padrão. Infelizmente, o regex não é o meu ponto strong.
Até agora eu estou preso na detecção do arquivo # row # estrutura na linha
cat InputFile | while read line
do
echo $line | grep '[F,f]\d\d[R,r]\d\d' >/dev/null #this is assuming two digit file number and 2 digit row number
result=$?
if [ $result -eq 0 ]
then
echo $line >tempfile
fi
done
essa regex correspondente no comando grep falha o tempo todo, mesmo que a linha contenha o padrão F08R16.
Depois de realizar isso, quero extrair essa substring em uma variável e analisar a estrutura da variável e adicionar zeros à esquerda, quando necessário, para torná-la uniforme.
Qualquer sugestão para corrigir meu regex e atingir meu objetivo maior de extrair variáveis é muito apreciada.
Para o que vale a pena, estou trabalhando em uma caixa de versão 6.7 do CentOS na época, mas tenho outras distribuições à minha disposição.