![]() |
|
|
google unix.com
|
|||||||
| Forums | Registrer | Forum Rules | Lenker | Album | FAQ | Medlemsliste | Kalender | Søke | Dagens innlegg | Marker forumene som lest |
| Shell programmering og Skripting Post spørsmål om ksh, csh, SH, Bash, Perl, PHP, SED, awk og ANDRE shell scripts og Shell skriptespråk her. |
Mer UNIX og Linux Forum Emner Du kan finne nyttig
|
||||
| Tråd | Tråd startet | Forum | Svar | Siste innlegg |
| erstatte flere linjer med én linje | siba.s.nayak | Shell programmering og Skripting | 3 | 05-28-2008 03:43 |
| bruker tr å legge til flere linjer med utgang til en linje | otes4 | Shell programmering og Skripting | 3 | 02-18-2008 11:30 |
| Concatenating flere linjer til en linje hvis matche mønsteret | phixsius | Shell programmering og Skripting | 13 | 01-24-2008 11:02 |
| Split en stor linje i flere 120 tegn med sed? | jerome_1664 | Shell programmering og Skripting | 2 | 08-17-2006 01:03 |
| Splitting én linje i flere linjer | thanuman | Shell programmering og Skripting | 4 | 02-23-2005 04:56 |
![]() |
|
|
LinkBack | Thread Tools | Søk i denne tråden | Rate Thread | Visningsmoduser |
|
|
|
||||
|
Hei Fyrene,
Jeg trenger hjelp. Jeg er ganske ny i skallet nivå programmering. Jeg prøvde å splitte en lang linjer til flere linjer med få betingelser. Jeg goggle for koden og funnet noen tekstutdrag og prøvde å endra det, men jeg fikk noen merkelige problemer også. Jeg må dele linjene hvis linjen er lengre enn 120 tegn, så har jeg for å skille det ved å legge "\" på slutten av rundt 120. karakter. Merk det kan bare skilles ved avgrensing stillinger som mellomrom eller komma. Og her er koden for det #! / 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 + +) ( bokstav \u003d substr ($ 0, i + m, 1); # printf ( "% s \ n", bokstav); if (brev !\u003d",") så ellers ( j \u003d m; # Printf ( "% s \ n", substr ($ 0, 1 i, j)); ) fi if (brev! \u003d "") så ellers (J \u003d m;) fi ) printf ( "% s / \ n", substr ($ 0, 1 i, j)); i + \u003d j; str \u003d substr ($ 0, i, lengde ($ 0)); ) if (length (str)> 1) printf ( "% s \ n", substr (str, 2, lengde (str))); ) ellers ( print $ 0 ) ) 'MINFIL.TXT Men problemet mitt var at over tilstanden fungerer dersom satt i postet rekkefølge. Hvis jeg pleide å jobbe med lik og sette uttrykket etter da det ikke fungerer. Jeg var heller ikke i stand til å bruke eller uttrykk for komma og mellomrom Jeg trenger også program som kan gå den samme operasjonen. Jeg leste også få veiledning om sed men fant det ganske forvirrende for nye brukere ![]() ![]() |
|
||||
|
Old C programmerer, ikke sant? Velkommen til høyt nivå språk, der du ikke trenger å gjenoppfinne strlen i hvert prosjekt. Mannen fold perl -pe 's / (. (1119) [,]) / \ 1 \ \ \ n / g' Jeg forstår ikke spørsmålet om OR. Hva gjorde du prøver, og hvor ikke det fungere? Code:
if (letter == " " || letter == ",") |
|
||||
|
Hei Takk for svar. Ja jeg har jobbet med C og VB, men ikke i disse skallet nivå programmering. Og Hovedproblemet for meg på disse programmering er de neppe gi meg feilmelding, og jeg kan ikke sjekke tilstanden på debug modus. For eller Logic Jeg prøvde Code:
if (letter = " " -o letter = ",") som jeg fant på noen tutorials. Og jeg leste også at for likeverdige å vi må bruke enkle '\u003d' ikke så'\u003d\u003d'' som C + + Er denne linja gjør den samme operasjonen som min?? Code:
perl -pe 's/(.{1,119}[ ,])/\1\\\n/g'
Det er veldig vanskelig å finne ut hva som skjer med disse koden. Jeg vet noen ting a) å håndtere strenger, må vi gi "på begynnelsen og slutten av kommandoen b) alle argumentene må skilles med / Jeg egentlig ikke vet noen ting enn de som finnes fra denne koden ![]()
|
|
||||
|
Du har lest shell programmering opplæring (og muligens C shell, hvis de råd runde parenteser i dersom, hvis - Det er forskjellig fra Bourne shell, slag av like Java er ganske ulik JavaScript, men ikke fullt så relatert), men programmet du har skrevet er i awk språk, som slett ikke er det samme. Sammenlign med hvordan du kan bruke en DLL skrevet på et annet språk fra et C-program. Men med skript, kan kilden komme i to forskjellige språk, og ofte er - du ofte putte små awk eller sed eller Perl eller TCL eller ... andre scripts i skallskript hvor skallet egen syntaks eller anlegg samsvarer ikke problemet plassen godt nok.
Den, det Perl programmet ikke hva jeg tenker på spec sier at det bør gjøre. Prøv den og se. Den erstatter multipler av 119 charactes eller mindre etterfulgt av et mellomrom eller et komma med samme strengen pluss en omvendt skråstrek og en newline. Du kan gjøre det samme i sed eller awk, Om enn ikke fullt så konsist; det viktigste konseptet her er en regeluttrykket, Som er en fasilitet alle disse språkene gi. (Jeg tror du har det i VB, også, og det er C-biblioteker du kan koble til hvis du vil.) Les deg opp på det, er det en svært nyttig og allsidig verktøy, helt uavhengig av et bestemt språk. |
![]() |
| Hugseliste |
| Thread Tools | Søk i denne tråden |
| Visningsmoduser | Ranger denne tråden |
|
|