Como posso remover caracteres de texto em uma linha antes de um caractere específico?

1

Como posso remover caracteres de texto em uma linha antes de um caractere específico?

Eu quero remover os caracteres à esquerda da primeira letra "F"

Exemplo:

null###F01|54646466|00K4234001|IFD|1990101
null###F02|54646499|00K4234001|TFS|1990101
null###F03|03232432|00RWEREW01|ZAI|1990101

O resultado deve ser

F01|54646466|00K4234001|IFD|1990101
F02|54646499|00K4234001|TFS|1990101
F03|03232432|00RWEREW01|ZAI|1990101

Estou tentando com awk -F"F" '{print "F"$2}' , mas não funciona.

    
por Miguel Angel 18.07.2015 / 00:34

2 respostas

1
grep -o 'F.*'

ou (precisamos de mais de 30 caracteres)

perl -pe 's!.*?F!F!'
    
por 18.07.2015 / 20:22
7

Se a sua entrada all estiver assim, a solução mais eficiente é mais provável:

cut -d\# -f4- <<\IN
null###F01|54646466|00K4234001|IFD|1990101
null###F02|54646499|00K4234001|TFS|1990101
null###F03|03232432|00RWEREW01|ZAI|1990101
IN

Eu uso um documento acima para demonstrar, mas você pode usar apenas cut -d\# -f4- <infile >outfile . Você também pode usar cut -c8- <in >out (que, se eu for honesto, é provavelmente a maneira mais eficiente) . De qualquer forma ...

OUTPUT

F01|54646466|00K4234001|IFD|1990101
F02|54646499|00K4234001|TFS|1990101
F03|03232432|00RWEREW01|ZAI|1990101
    
por 18.07.2015 / 01:15