← Back to team overview

sslug-teknik team mailing list archive

Re: Regexp (SOLVED) (Korrektion)

 

Kommandoen er
$ awk '{
x=substr($0,1,27)
y=substr($0,28,32)
gsub(/[0-9]/,"0",y)
z=substr($0,60)
print x y z
}' recharge_card.txt > recharge_card0.txt

Det tredie parameter i substr er antallet af tegn, ikke slut kolonnen...
Kolonnen i tabellen er i øvrigt 32 tegn, og ikke kun 15, der for de lidt
andre tal i nogle af kommandoerne.

Asbjorn Grandt wrote:
> Hej
> Svaret viste sig at være awk.
>
> $ awk '{
> x=substr($0,1,27)
> y=substr($0,28,43)
> gsub(/[0-9]/,"0",y)
> z=substr($0,44)
> print x y z
> }' recharge_card.txt > recharge_card0.txt
>
> Det er ikke hurtigt, men det er også kun en engangs kørsel.
>
> Mvh
> Asbjørn Grandt
>
> Jon Bendtsen wrote:
>   
>> On 14/01/2009, at 13.09, Asbjorn Grandt wrote:
>>
>>     
>>> Hej
>>>
>>> Jeg har et (forhåbentligt) hurtige spørgsmål.
>>>
>>> Jeg har en meget lang tekst fil, med ca 14 millioner linjer. Hvis jeg
>>> vil erstatte alle tegn fra text kolonne 28 til 43 i hver linje med
>>> f.eks. 0 (af sikkerheds grunde), hvad kan jeg bruge for at gøre det ?
>>> SED lyder fornuftig, men den kender jeg desværre ikke ret meget til.
>>>
>>> Regexpen er jo simpel nok "s/\d/0/", men hvordan får jeg sed til kun at
>>> ændre de før nævnte kolonner?
>>>       
>> Tja, den hjernedøde metode er vel
>>
>> sed -e "s/^\(............................\)...............\(.*\)$/\10\2/"
>>
>> Eller med andre ord. Først 28 single tegn som gives nummer 1,
>> så 28-43 tegn som ikke har et nummer som fjernes, og så bagefter
>> resten af linien som gives nummer 2.
>>
>>
>> JonB
>>
>>
>>
>>     
>
>
>
>
>   

References