The UNIX and Linux Forums  
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.

Go Back   UNIX och Linux Forum > Upp Forum > Shell-programmering och Skript
.
google unix.com



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

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
LinkBack Thread Tools Sök i denna tråd Rate Thread Visningslägen
  #1 (permalänk)  
Old 03-29-2008
dd_sh dd_sh is offline
Registered User
  
 

Join Date: mars 2008
Inlägg: 2
Unhappy Uppdelning linjen i flera rader

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
  #2 (permalänk)  
Old 03-30-2008
eran era is offline Forum Advisor  
Herder av Useless Cats (På sabbatsår)
  
 

Join Date: mars 2008
Ort: / det är / / bara / bin / sh
Inlägg: 3652
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 == ",")
  #3 (permalänk)  
Old 03-31-2008
dd_sh dd_sh is offline
Registered User
  
 

Join Date: mars 2008
Inlägg: 2
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 = ",")
som jag hittade på några tutorials.
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'
Det är verkligen svårt att ta reda på vad som händer med dessa nummer. Jag vet få saker
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

  #4 (permalänk)  
Old 03-31-2008
eran era is offline Forum Advisor  
Herder av Useless Cats (På sabbatsår)
  
 

Join Date: mars 2008
Ort: / det är / / bara / bin / sh
Inlägg: 3652
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.
Closed Thread

Komihåglista

Thread Tools Sök i denna tråd
Sök i denna tråd:

Avancerad sökning
Visningslägen Betygsätt denna tråd
Betygsätt denna tråd:

Utstationering Regler
Du får inte efter nya trådar
Du får inte efter svar
Du får inte skicka bilagor
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG] kod
HTML-koden är Av
Trackback är
Pingbacks är
Refbacks är




Alla tider är GMT -4. Klockan är nu 01:01.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Översättningar Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
UNIX och Linux Forum Innehållet upphovsrättsskyddat © 1993-2009. All Rights Reserved.Ad förvaltning RedTyger

Content Relevant webbadresser från vBSEO 3.2.0