Nieuws:

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: nano editor  (gelezen 1018 keer)

Offline gercokees

  • Lid
nano editor
« Gepost op: 2008/03/19, 14:56:58 »
Hoi,
Hoe verwijder ik 1000 regels in nano?
^k
10 minuten vasthouden? Of kan dat sneller.......
Groet,
Gerco-Kees
<><

Offline Johan van Dijk

  • Administrator
    • johanvandijk
nano editor
« Reactie #1 Gepost op: 2008/03/19, 15:27:37 »
Wat staat er op die regels? Zijn het lege regels of staat er 1000 keer ongeveer hetzelfde in?
Als je kan filteren op de inhoud kan je vi of sed gebruiken.

Offline gercokees

  • Lid
nano editor
« Reactie #2 Gepost op: 2008/03/19, 15:41:29 »
Ha Johanvd
het punt is dit:
ik heb een file:


    header
   
      1e track
      heel veel regels met info

   
   
     2e track, ook heel veel regels met info

   
   
     3e track

   
Wat ik wil is nu dat ik 3 files maak, alle 3 met een header en met respectievelijk de 1e, 2e en 3e track. Tot nu toe deed ik dat altijd met de hand. Openen in gedit, zoeken naar , shift indrukken en een paar keer page-up, knippen en plakken.... Maar dat wordt ik een beetje zat.......

Als je een goeie tip hebt, dan graag... ik vind het niet erg om een beetje met nano te prutten, of mezelf vi aan te leren... En sed? Is dat ook leuk? Wat zou jij doen?
Groet,
Gerco-Kees
<><

nano editor
« Reactie #3 Gepost op: 2008/03/19, 16:00:43 »
euhm...
Maak eerst 3 bestanden met de hand aan waar de header instaat, maar zonder de sluittag
Dan wordt het al wat gecompliceerder...

#!/usr/bin/perl
$trackfnd = false;
$trackct = 0;
open(FILE1, ">file1.xml");
open(FILE2, ">file2.xml");
open(FILE3, ">file3.xml");
while () {
  $line = $_;
  if ($line =~ /.*.*/) {
    $trackfnd = true;
    $trackct++;
  }
  if ($trackfnd) {
     switch $trackct {
       case 1 {
         print FILE1 $line;
       }
       case 2 {
         print FILE2 $line;
       }
       case 3 {
         print FILE3 $line;
       }
       default {
         die "Bad programmer! You made a mistake!"
       }
     }
  }
  if ($line =~/.*<\/track>.*/) {
  $trackfnd = false;
  }
}
print FILE1 ;
print FILE2 ;
print FILE3 ;
close (FILE1); close(FILE2); close (FILE3);

gebruik:
split.pl < mijnxmlbestand.xml

het script valt onder de GPL, dus er is geen garantie, zelfs geen garantie dat het wel werkt en dat het foutloos is :)

- SeySayux
I use a Unix-based system, that means I'll get laid as often as I have to reboot.
LibSylph
SeySayux.net

Offline gercokees

  • Lid
nano editor
« Reactie #4 Gepost op: 2008/03/19, 18:56:56 »
ehh, help?

String found where operator expected at /home/gercokees/bin/gpx-split.pl line 16, near "case '1'"
        (Do you need to predeclare case?)
String found where operator expected at /home/gercokees/bin/gpx-split.pl line 19, near "case '2'"
        (Do you need to predeclare case?)
String found where operator expected at /home/gercokees/bin/gpx-split.pl line 22, near "case '3'"
        (Do you need to predeclare case?)
syntax error at /home/gercokees/bin/gpx-split.pl line 15, near "$trackct {"
syntax error at /home/gercokees/bin/gpx-split.pl line 19, near "case '2'"
syntax error at /home/gercokees/bin/gpx-split.pl line 22, near "case '3'"
Execution of /home/gercokees/bin/gpx-split.pl aborted due to compilation errors.
Groet,
Gerco-Kees
<><

nano editor
« Reactie #5 Gepost op: 2008/03/20, 14:31:59 »
Paar kleine foutjes, sorry (ik kan het niet hier testen)

#!/usr/bin/perl
use Switch;
$trackfnd = false;
$trackct = 0;
open(FILE1, ">file1.xml");
open(FILE2, ">file2.xml");
open(FILE3, ">file3.xml");
while () {
  $line = $_;
  if ($line =~ /.*.*/) {
    $trackfnd = true;
    $trackct++;
  }
  if ($trackfnd) {
     switch ($trackct) {
       case 1 {
         print FILE1 $line;
       }
       case 2 {
         print FILE2 $line;
       }
       case 3 {
         print FILE3 $line;
       }
       default {
         die "Bad programmer! You made a mistake!"
       }
     }
  }
  if ($line =~/.*<\/track>.*/) {
  $trackfnd = false;
  }
}
print FILE1 ;
print FILE2 ;
print FILE3 ;
close (FILE1); close(FILE2); close (FILE3);
I use a Unix-based system, that means I'll get laid as often as I have to reboot.
LibSylph
SeySayux.net

Offline gercokees

  • Lid
nano editor
« Reactie #6 Gepost op: 2008/03/21, 09:07:57 »
Nou, bedankt voor je progje... Omdat het in eerste instantie gisteren nog niet werkte ben ik begonnen een bash-scriptje te knutselen. Dit is m geworden, geheel geinspireerd op jouw script... Opmerkingen zijn natuurlijk van harte welkom..
Dank nogmaals voor je moeite, dank zij jou idee heb ik nu een perfecte oplossing voor mijn probleem...



#! /bin/bash

# ----
# Gerco-Kees Bloemsma, maart 2008
#
#
file="84673.gpx"
trackcnt=0

# eerst vier lege files aanmaken
echo > "een.xml"
echo > "twee.xml"
echo > "drie.xml"
echo > "vier.xml"

# hier in een loopje de bronfile regel voor regel inlezen.
while read line
   do
   if [ "${line}" == "" ] ; then
      # hier het begin van een -trk- opzoeken en een
      # tellertje ophogen
      trackcnt=$(($trackcnt+1))

   fi
   case $trackcnt in
   0)
      # voor  het begin van de eerste -trk- de headers naar de
      # verschillende files schrijven...
      echo "${line}">>"een.xml";
      echo "${line}">>"twee.xml";
      echo "${line}">>"drie.xml";
      echo "${line}">>"vier.xml";
      ;;
   1)
      # eerste trk
      echo "${line}">>"een.xml";
      ;;
   2)
      echo "${line}">>"twee.xml";
      ;;
   3)
      echo "${line}">>"drie.xml";
      ;;
   4)
      echo "${line}">>"vier.xml";
      ;;
   esac

done < $file

# tenslotte nog de eind-tag wegschrijven
echo "" >> "een.xml"
echo "" >> "twee.xml"
echo "" >> "drie.xml"
echo "" >> "vier.xml"

# en samenvatten
echo "Aantal tracks: $trackcnt";
Groet,
Gerco-Kees
<><