In UNIX laatste regel van een bestand verwijderen

Pagina: 1
Acties:
  • 124 views sinds 30-01-2008
  • Reageer

  • JaQ
  • Registratie: Juni 2001
  • Laatst online: 18:41
Ik ben bezig met een klein unix-progje dat een bestand dat vanuit Oracle wordt gegenereerd FTP't naar een andere server (fax-server).

Nu staat er echter op de laatste regel van dit bestand nog een commando voor de fax-server, dat eigenlijk verwijderd moet worden. |:(

Als ik de Oracle programmatuur aanpas, ben ik weer een lange tijd bezig, maar onder UNIX moet er toch een commando zijn om standaard de laatste regel van een bestand te verwijderen. :?

Mijn UNIX-skils zijn echter nog van een dermate laag niveau, dat ik dit niet zelf op kan lossen. :(

Wie kan me helpen. :?

Egoist: A person of low taste, more interested in themselves than in me


  • stylee
  • Registratie: December 2000
  • Laatst online: 04-09-2021

stylee

blah zeg ik je

probeer eens iets van
code:
1
cat bestand | trail <parameters> > bestand

bij parameters moet je dus ff opzoeken in de manpages hoe je trail alleen de laatste regel kan laten weergeven en vervolgens de boel inversen (het kan dat weet ik)

Je kan evt ook grep gebruiken en alleen de laatste commando eruit filteren (inversie doet weer de truuk), tenminste als die laatste commando elke keer hetzelfde is.

Zie oa. man tail, man grep zou ik zeggen.

  • tomato
  • Registratie: November 1999
  • Niet online
code:
1
perl -p -i -e 's/\n.*?$//' bestand

Ofzo?

  • stylee
  • Registratie: December 2000
  • Laatst online: 04-09-2021

stylee

blah zeg ik je

Op donderdag 13 september 2001 14:57 schreef tomato het volgende:
code:
1
perl -p -i -e 's/\n.*?$//' bestand

Ofzo?
Dat is ook een manier om het te doen ja >:)

  • tomato
  • Registratie: November 1999
  • Niet online
Op donderdag 13 september 2001 15:01 schreef stylee het volgende:
Dat is ook een manier om het te doen ja >:)
Ik zag zo snel niet hoe ik dit met grep zou gaan doen en dat in combinatie met weinig Unix ervaring geeft een perl oplossing ;)

  • JaQ
  • Registratie: Juni 2001
  • Laatst online: 18:41
Op donderdag 13 september 2001 14:57 schreef stylee het volgende:
probeer eens iets van
code:
1
cat bestand | trail <parameters> > bestand

bij parameters moet je dus ff opzoeken in de manpages hoe je trail alleen de laatste regel kan laten weergeven en vervolgens de boel inversen (het kan dat weet ik)

Je kan evt ook grep gebruiken en alleen de laatste commando eruit filteren (inversie doet weer de truuk), tenminste als die laatste commando elke keer hetzelfde is.

Zie oa. man tail, man grep zou ik zeggen.
Ik zal eens kijken of ik het daarmee op kan lossen. (op deze manier kan ik in ieder geval de laatste regel vinden, dan kan ik vast wel deze regel markeren of zo...)

Thanx

Egoist: A person of low taste, more interested in themselves than in me


  • jeroen|IA
  • Registratie: Juni 1999
  • Laatst online: 26-05-2025
Pipen door sed '$d', dus b.v. cat bestand | sed '$d'
(vergeet de quotes niet).

Overigens: het trail commando ken ik niet, wel tail..

  • JaQ
  • Registratie: Juni 2001
  • Laatst online: 18:41
Op donderdag 13 september 2001 14:57 schreef tomato het volgende:
code:
1
perl -p -i -e 's/\n.*?$//' bestand

Ofzo?
Ben ik wel mijn laatste regel kwijt, maar ook meteen de layout van het bestand. :(

Egoist: A person of low taste, more interested in themselves than in me


  • JaQ
  • Registratie: Juni 2001
  • Laatst online: 18:41
en er is geen manual voor perl. ook niet in mijn (beperkte) kornshell manual.

Kan iemand de syntax plaatsen?

Egoist: A person of low taste, more interested in themselves than in me


  • tomato
  • Registratie: November 1999
  • Niet online
Wat bedoel je met de layout van het bestand?

  • jeroen|IA
  • Registratie: Juni 1999
  • Laatst online: 26-05-2025
Eh... hallo... ik heb de oplossing al gegeven...

  • JaQ
  • Registratie: Juni 2001
  • Laatst online: 18:41
Op donderdag 13 september 2001 16:22 schreef jeroen het volgende:
Eh... hallo... ik heb de oplossing al gegeven...
ehhmm.. NOT.
Op die manier krijg ik gewoon mijn originele bestand terug. (inclusief verkeerde commando)

Egoist: A person of low taste, more interested in themselves than in me


  • JaQ
  • Registratie: Juni 2001
  • Laatst online: 18:41
Op donderdag 13 september 2001 16:02 schreef tomato het volgende:
Wat bedoel je met de layout van het bestand?
Het bestand heeft een layout.
Als ik echter het perl commando gebruik, zoals jij 'm geeft, wordt alles weggeschreven als 1 lange regel.
Gevolg is, dat ik een lege pagina uit de fax krijg.

De naam van het bestand is in dit geval FAX_ASN.txt (maar dat wordt straks een variabele)

perl -p -i -e 's/\n.*?$//' FAX_ASN.txt
verneukt de layout.

perl -p -i -e 's/<BREAK>//' FAX_ASN.txt
zorgt ervoor dat allen <BREAK> commando's pleite zijn (dus niet alleen op de laatste regel.)

Egoist: A person of low taste, more interested in themselves than in me


  • JaQ
  • Registratie: Juni 2001
  • Laatst online: 18:41
Op donderdag 13 september 2001 16:37 schreef DrFrankenstoner het volgende:

[..]

ehhmm.. NOT.
Op die manier krijg ik gewoon mijn originele bestand terug. (inclusief verkeerde commando)
beetje snel geloof ik.

cat bestand | sed '$d' > bestand_nieuw werkt wel.
Sorry jeroen voor de snelle reactie. Moet beter opletten.

Thanx in ieder geval. :)

Egoist: A person of low taste, more interested in themselves than in me


  • Wirf
  • Registratie: April 2000
  • Laatst online: 18:35
Inefficiente manier:
code:
1
2
3
4
5
#!/bin/bash

AANTALREGELS=`cat bestand | wc -l`
AANTALREGELS=`echo "$(AANTALREGELS) - 1" | bc`
cat bestand | tail -n "$(AANTALREGELS)" > een_ander_bestand

let wel op: de backticks zijn backticks (die toets links van de 1)

edit: eerste versie was niet goed

Heeft sinds kort zijn wachtwoord weer terug gevonden!


  • tomato
  • Registratie: November 1999
  • Niet online
En als je van de * een + maakt? Of de -p optie weglaat? Verder kan ik niet zo veel verzinnen (geen tijd en geen Unix systeem bij de hand).

[edit]
Je hebt al een oplossing :)

  • _-= Erikje =-_
  • Registratie: Maart 2000
  • Laatst online: 21-09 14:23
Eerst met wc bepalen hoeveel regels er zijn en dan met head dat aantal-1 eraf knippen...
Pagina: 1