![]() |
|
|
google unix.com
|
|||||||
| Forums | Registrer | Forum Regler | Links | Albums | FAQ | Members List | Kalender | Søgning | Dagens Stillinger | Mark Forums Read |
| Shell Programmering og Scripting Post spørgsmål om ksh, CSH, SH, Bash, Perl, PHP, SED, AWK og ANDRE shell scripts og Shell scriptsprog her. |
Mere UNIX og Linux Forum Emner du måske kan finde Helpful
|
||||
| Tråd | Thread Starter | Forum | Svar | Last Post |
| erstatning af flere linjer med enkelt linje | siba.s.nayak | Shell Programmering og Scripting | 3 | 05-28-2008 03:43 AM |
| bruger tr at lægge flere linjer af produktionen i en linje | otes4 | Shell Programmering og Scripting | 3 | 02-18-2008 11:30 AM |
| Concatenating flere linjer til en linje, hvis matcher mønstret | phixsius | Shell Programmering og Scripting | 13 | 01-24-2008 11:02 PM |
| Split en enorm linje i flere 120 tegn strækninger med sed? | jerome_1664 | Shell Programmering og Scripting | 2 | 08-17-2006 01:03 PM |
| Opdele en enkelt linje i flere linjer | thanuman | Shell Programmering og Scripting | 4 | 02-23-2005 04:56 AM |
![]() |
|
|
LinkBack | Thread Tools | Søg denne tråd | Rate Thread | Display Modes |
|
|
|
||||
|
Hi Guys,
Jeg har brug for en hjælp. Jeg er ret ny på tanken niveau programing. Jeg forsøgte at splitte en lang linjer til en flere linjer med få betingelser. Jeg goggle til koden og fundet nogle uddrag og forsøgte at ændret det, men jeg fik nogle mærkelige problemer også. Jeg er nødt til at opdele de linjer, hvis linjen er længere end 120 tegn, så jeg er nødt til at adskille det ved at tilføje "\" i slutningen af omkring 120. Karakter. Bemærk, det kan kun adskilles ved afgrænsningen stillinger, såsom rum eller komma. Og her er koden for at #! / bin / sh awk '( if (length ($ 0)> 120) ( str \u003d $ 0; i \u003d 0; while (length (str)> 120) ( j \u003d 0; for (m \u003d 1 m <\u003d 120 m + +) ( bogstav \u003d substr ($ 0, I + m, 1); # printf ( "% s \ n", brev); if (bogstav !\u003d",") så anden ( j \u003d m; # Printf ( "% s \ n", substr ($ 0, i +1, j)); ) fi if (bogstav! \u003d "") så anden (J \u003d m;) fi ) printf ( "% s / \ n", substr ($ 0, i +1, j)); i + \u003d j; str \u003d substr ($ 0, I, længde ($ 0)); ) if (length (str)> 1) printf ( "% s \ n", substr (str, 2, længde (str))); ) anden ( print $ 0 ) ) 'Myfile.txt Men mit problem var, at ovennævnte betingelse er arbejde, hvis der sættes i indsendt orden. Hvis jeg vant til at arbejde med lige til og sætte udtrykket efter, så er det ikke fungerer korrekt. Jeg var heller ikke i stand til at bruge eller udtryk for komma og rum Jeg har også brug for det program, som kan vende tilbage den samme operation. Jeg læser også få tutorial om sed men fandt sin ret forvirrende for nye brugere ![]() ![]() |
|
||||
|
Old C programmør, huh? Velkommen til høj-niveau sprog, hvor du ikke nødt til at genopfinde strlen i hvert projekt. mand fold perl -pe 's / (. (1119) [,]) / \ 1 \ \ \ n / g' Jeg forstår ikke spørgsmålet om OR. Hvad gjorde du forsøger, og hvordan gjorde ikke det? Code:
if (letter == " " || letter == ",") |
|
||||
|
Hej Tak for svaret. Ja jeg har arbejdet på C og VB, men ikke i disse tomme niveau programmering. Og største problem for mig om disse programing er de næppe give mig fejlmeddelelse, og jeg kan ikke kontrollere betingelsen om debug mode. For eller logik jeg prøvede Code:
if (letter = " " -o letter = ",") som jeg fandt på nogle tutorials. Og jeg har også læst, at for lig at vi er nødt til at bruge en enkelt '\u003d' ikke som'\u003d\u003d'' som C + + Er denne linje er den samme operation som min??? Code:
perl -pe 's/(.{1,119}[ ,])/\1\\\n/g'
Det er virkelig svært at finde ud af, hvad der sker med disse kode. Jeg kender nogle ting a) til at håndtere de strenge, vi er nødt til at give "i starten og slutningen af kommandoen b) alle argumenter, der bør være adskilt af / Jeg ved virkelig ikke nogen ting ud over dem, fra denne kode ![]()
|
|
||||
|
Du har læst shell programmering tutorials (og muligvis C shell, hvis de råd runde parenteser i hvis - Der er anderledes end Bourne shell, lidt ligesom Java er helt i modsætning til JavaScript, men ikke helt så uafhængige), men det program, du har skrevet, er i awk sprog, der er slet ikke det samme. Sammenlign med, hvordan du kan bruge en DLL skrevet på et andet sprog fra et C-program. Men med scripts, kan kilden være på to forskellige sprog, og ofte er - du ofte sat små awk eller sed eller Perl eller TCL eller ... andre scripts i shell-scripts, hvor tanken egen syntaks eller faciliteter, der ikke passer til problemet rummet godt nok.
Den Perl Programmet gør hvad jeg kan forestille mig din spec siger det skal gøre. Prøv det og se. Den erstatter multipla af 119 charactes eller mindre efterfulgt af et mellemrum eller et komma med det samme streng plus en omvendt skråstreg og en ny linje. Du kan gøre det samme i sed eller awk, Om end ikke helt så rammende, det vigtigste begreb her er der en regulære udtryk, Hvilket er en facilitet alle disse sprog giver. (Jeg tror du har det i VB, også, og der er C biblioteker kan du linke til hvis du vil.) Læs op på, at det er et meget nyttigt og alsidigt værktøj, helt uafhængigt af bestemte sprog. |
![]() |
| Bogmærker |
| Thread Tools | Søg denne tråd |
| Display Modes | Bedøm denne tråd |
|
|