![]() |
Hej och välkommen från USA till UNIX och Linux Forum! Tack för ditt besök och gå med i vår globala gemenskapen.
|
|
google unix.com
|
|||||||
| Forum | Registrera | Forum Regler | Länkar | Album | FAQ | Medlemslista | Kalender | Söka | Dagens inlägg | Markera forum som lästa |
| Shell-programmering och Skript Post frågor om ksh, CSH, SH, bash, PERL, PHP, sed, awk och andra skalskript och skal skriptspråk här. |
Mer UNIX och Linux Forum Ämnen Du kan hitta Helpful
|
||||
| Tråd | Thread Starter | Forum | Svar | Senaste Inlägg |
| ersätter flera rader med enda rad | siba.s.nayak | Shell-programmering och Skript | 3 | 05-28-2008 02:43 |
| använder tr sätta flera rader av produktion i en linje | otes4 | Shell-programmering och Skript | 3 | 02-18-2008 11:30 |
| Concatenating flera rader till en rad om matchen mönster | phixsius | Shell-programmering och Skript | 13 | 01-24-2008 11:02 |
| Dela en stor överensstämmelse i flera 120 tecken linjer med sed? | jerome_1664 | Shell-programmering och Skript | 2 | 08-17-2006 12:03 |
| Uppdelning en enda rad i flera rader | thanuman | Shell-programmering och Skript | 4 | 02-23-2005 04:56 |
![]() |
|
|
LinkBack | Thread Tools | Sök i denna tråd | Rate Thread | Visningslägen |
|
|
|
||||
|
Hej Killar,
Jag behöver hjälp. Jag är ganska ny på skalet nivå programmering. Jag försökte dela en långrev till flera rader med några villkor. Jag Goggle för koden och hittade några strängar och försökte ändrade det men jag fick några konstiga problem också. Jag måste dela upp rader om linjen är längre än 120 tecken, då måste jag skilja det genom att lägga "\" i slutet av omkring 120. Karaktär. Observera att det endast kan separeras vid avgränsningen positioner såsom mellanslag eller kommatecken. Och här är koden för att #! / 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 + +) ( skrivelse \u003d substr ($ 0, i + m, 1); # printf ( "% s \ n", bokstav); if (bokstav !\u003d",") sedan annan ( j \u003d m; # Printf ( "% s \ n", substr ($ 0, i +1, j)); ) fi if (bokstav! \u003d "") sedan annan (J \u003d m;) fi ) printf ( "% s / \ n", substr ($ 0, i +1, j)); i + \u003d j; str \u003d substr ($ 0, I, längd ($ 0)); ) if (length (str)> 1) printf ( "% s \ n", substr (str, 2, length (str))); ) annan ( print $ 0 ) ) 'Minfil.txt Men mitt problem var att villkoret ovan fungerar om de föreligger i Inlagd ordning. Om jag van att arbeta med lika och sätta uttryck efter då det inte fungerar. Jag kunde heller inte använda eller uttryck för kommatecken och utrymme Jag behöver också ett program som kan återgå till samma operation. Jag läste också få handledning om sed men fann det ganska förvirrande för nya användare ![]() ![]() |
|
||||
|
Gammal C programmerare, va? Välkommen till högnivåspråk, där man inte behöver uppfinna strlen i varje projekt.
Mannen gånger perl -pe 's / (. (1119) [,]) / \ 1 \ \ \ n / g' Jag förstår inte frågan om OR. Vad gjorde du försöker, och hur gjorde inte det? Kod:
if (letter == " " || letter == ",") |
|
||||
|
Hej
Tack för svaret. Ja jag har arbetat med C och VB men inte i dessa skal nivå programmering. Och största problemet för mig på dessa programmering är de knappast ge mig felmeddelande och jag kan inte kontrollera villkoret för debug mode. För eller logik jag försökte Kod:
if (letter = " " -o letter = ",") Och jag läste även att för lika för att vi måste använda samma "\u003d" inte så'\u003d\u003d'' som C + + Är denna budgetpost göra samma operation som min??? Kod:
perl -pe 's/(.{1,119}[ ,])/\1\\\n/g'
a) att hantera strängarna, vi måste ge "i början och slutet av kommandot b) Alla argument bör separeras av / Jag vet faktiskt inte någon sak utöver dem från den här koden ![]() ![]() |
|
||||
|
Du har läst skalprogrammering tutorials (och möjligen C-skal, om de råd runda parenteser i om - Som skiljer sig från Bourne-skal, ungefär som Java är helt olik JavaScript, men inte riktigt lika icke-närstående), men det program som du har skrivit är i awk språk, vilket inte alls samma sak. Jämför med hur du kan använda en DLL skrivet på ett annat språk från ett C-program. Men med skript, kan källan vara i två olika språk, och ofta är - du sätter ofta små awk eller sed eller Perl eller TCL eller ... Andra skript i skalskript där tanken egen syntax eller anläggningar inte matchar problemet utrymmet tillräckligt bra.
Den Perl Programmet gör vad jag tror din spec säger att det borde göra. Prova det och se. Den ersätter multiplar av 119 charactes eller mindre följt av ett mellanslag eller ett kommatecken med samma sträng plus ett omvänt snedstreck och en nyrad. Du kan göra detsamma i sed eller awk, Om än inte riktigt lika kort och koncist, Huvudtanken är här en reguljärt uttryck, Vilket är en anläggning alla dessa språk ger. (Jag tror du har den i VB, också, och det finns C-bibliotek du kan länka till om du vill.) Läs upp på, det är ett mycket användbart och mångsidigt verktyg, helt oberoende av enskilda språk. |