Algum sed
sugere para você:
-
Quase nunca faz sentido fazer um loop
while read
sobre um arquivo e usarsed
ouawk
dentro, pois essas ferramentas são projetadas para processar um arquivo linha por linha, de qualquer forma -
O intervalo de endereços em
sed '1,1d'
é supérfluo. Se você quiser endereçar uma única linha, você pode fazersed '1d'
sem intervalo. Neste caso, existe apenas uma linha de qualquer forma, então por que redirecionar uma linha excluída para um arquivo? -
Em
sed '1,1d' "$line"
, espera-se que$line
seja o nome do arquivo! -
Então, o que você deve fazer é um simples
sed '/find the right regexp/d' $File
. -
O padrão para corresponder à string dada na posição 75ff na linha seria
/^.\{74\}00000000000000+00000000000000+/
(esse é o começo da linha (^
), seguido por 74 caracteres aleatórios e o padrão. -
Como no ponto acima, o
\{number\}
fornece um número de itens repetidos, você pode simplificar para/^.\{74\}0\{14\}+0\{14\}+/
-
Agora você pode simplificar ainda mais agrupando a sequência repetida:
\(sequence\)\{2\)
Agora, usando expressões regulares estendidas para evitar que a barra invertida escape, todo o seu script pode ser substituído por um simples
sed -E '/^.{74}(0{14}\+){2}/d' $File