The UNIX and Linux Forums  

Go Back   A UNIX és Linux Forums > Top Fórumok > Shell programozás és Scripting
.
google unix.com



Shell programozás és Scripting Post kérdések KSH, CSH, SH, Bash, Perl, PHP, SED, AWK ÉS EGYÉB shell szkriptek és shell script nyelvek itt.

Több, UNIX és Linux fórum témák Ön által talált Hasznos
Szál Thread Starter Fórum Válaszok Utolsó hozzászólás
Split nagy fájlt és add fejléc és a lábléc minden fájlt ashish4422 Shell programozás és Scripting 1 04-15-2008 07:12 AM
Split egy fájlt nem minta - Split, Csplit, awk madhunk A UNIX a dummies Kérdések és válaszok 10 12-17-2007 12:57 PM
split a fájl neve rinku Shell programozás és Scripting 1 05-28-2007 02:47 AM
Szükségességét, hogy a fájl megosztás getdpg Shell programozás és Scripting 11 09-04-2006 04:08 AM
Hogyan osztott fájlt tags belül file? spookyrtd99 Shell programozás és Scripting 1 07-31-2006 01:50 AM

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
LinkBack Téma eszközök Keresés a téma Rate Thread Megjelenítési módok
  #1 (permalink)  
Old 07-20-2004
pvar pvar is offline
Regisztrált felhasználó
  
 

Join Date: Feb 2004
Helyszín: MI, USA
Hozzászólások: 12
Split file awk

Próbálom olvasni a fájlt és részenkénti a fájlt több fájlra. Kell, hogy új fájlokat különböző sorok az eredeti fájl. vagyis az első kimeneti fájlt tartalmazó 10 sor, a második 100 sor, és így tovább. A kritériumok, hogy a sorok között két sorban kezdve néhány karakter (változó)

pl. A minta a bemeneti fájl

DOC100
aaaaaa
bbbbbb
cccccccc
VÉGE
DOC200
DDDDDDD
eeeeeee
VÉGE

Meg kell küldeni a sorok között DOC100 és END out.1
és a sorok között, és a következő DOC200 END out.2

Azt hittem, hogy ennek segítségével awk és megpróbáltam a következő parancsot, de ez nem dolgozik.

k \u003d grep DOC $ filename | cut-c4-6
awk-v cn \u003d $ k / $ DOC cn /, / end / (print $ 0) '$ filename> $ kimenet

Tud akárki segítsen nekem ezzel? Köszönöm
  #2 (permalink)  
Old 07-20-2004
zazzybob's Avatar
zazzybob zazzybob is offline Forum Advisor  
Regisztrált Geek
  
 

Join Date: Dec 2003
Helyszín: Melbourne, Ausztrália
Hozzászólások: 2100
A szkript, mint például ez a kép nevét out.100, out.200, ha a szám megfelel, ami következik, "DOC"


Kód:
#!/bin/sh

while read line
do
   if echo $line | grep DOC; then
       line_no=`echo $line | sed 's/DOC\([0-9]*\)/\1/g'`
   elif echo $line | grep END; then
       : #ignore
   else
       echo $line >> out.$line_no
   fi
done < file.txt

Ha file.txt tartalmazza az Ön adatait.

Ez egy gyors szkript és van mit javítani, de még lehet találni.

Egészségére
ZB
  #3 (permalink)  
Old 07-21-2004
Ygor's Avatar
Ygor Ygor is offline Forum Staff  
Moderátor
  
 

Join Date: Oct 2003
Helyszín: -31.96,115.84
Hozzászólások: 1.411
Using awk ..
Kód:
awk '/^DOC/{f=$1} f{print > f} /^END/{close f}' infile

  #4 (permalink)  
Old 07-21-2004
pvar pvar is offline
Regisztrált felhasználó
  
 

Join Date: Feb 2004
Helyszín: MI, USA
Hozzászólások: 12
Köszönet zazzybob és Ygor a segítséget. De látok némi probléma egyes szkriptjeidben.

zazzybob a forgatókönyvet - Először is van egy fix hosszúságú adatfájl, hogy szükség van hasítva. A szkript létre külön fájlokat a kívánt adatokat, de figyelmen kívül hagyja a szóközöket a területen, azt jelenti, hogy concatenates területeken hagyva ki a tereket is.

Ygor a forgatókönyvet - szkriptjeid teremt csak egy fájlt DOC az adatokat a múlt DOC / vége. De ez teszi az adatok, mint annak, ami a bemeneti fájl, ez jó jel.
  #5 (permalink)  
Old 07-21-2004
zazzybob's Avatar
zazzybob zazzybob is offline Forum Advisor  
Regisztrált Geek
  
 

Join Date: Dec 2003
Helyszín: Melbourne, Ausztrália
Hozzászólások: 2100
A probléma megoldásához a script I posted, csak be idézőjelek körül "$ sor", imigyen

Kód:
echo "$line" >> out.$line_no

Ez megőrzi a whitespace

Egészségére
ZB
  #6 (permalink)  
Old 07-21-2004
Ygor's Avatar
Ygor Ygor is offline Forum Staff  
Moderátor
  
 

Join Date: Oct 2003
Helyszín: -31.96,115.84
Hozzászólások: 1.411
Én nem olvastam a bit about fájlneveket, mint a "doc.1 előtt". Próbáld ki ezt helyette ...
Kód:
awk '/^DOC/{f="doc."++d} f{print > f} /^END/{close f; f=""}' infile

$ Fej -1000000 doc .*
\u003d\u003d> Doc.1 <\u003d\u003d
DOC100
aaaaaa
bbbbbb
cccccccc
VÉGE

\u003d\u003d> Doc.2 <\u003d\u003d
DOC200
DDDDDDD
eeeeeee
VÉGE
  #7 (permalink)  
Old 07-21-2004
pvar pvar is offline
Regisztrált felhasználó
  
 

Join Date: Feb 2004
Helyszín: MI, USA
Hozzászólások: 12
zazzybob a script szerkezet finom most.

Ygor a script még mindig kérdés. Teremt külön kimeneti fájlokat, de most már olyan sorokat kezdve DOC + END is a kimeneti fájlokat. Csak az adatok közötti sorokat.

Ellenzéki Köszönöm a segítséget.
Closed Thread

Könyvjelzõk

Téma eszközök Keresés a téma
Keresés a téma:

Részletes keresés
Megjelenítési módok Rate this thread
Rate this thread:

Posting szabályzat
Ön nem post new threads
Ön nem post válaszok
Ön nem post Csatolmányok
Ön nem szerkeszteni az üzeneteidet

BB kód van Be
Smilies vannak Be
[IMG] kód Be
HTML kód Ki
Trackbacks vannak Be
Pingbacks vannak Be
Refbacks vannak Be




Minden idő GMT -4. Az idő most 12:26 PM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Nyelvre lefordítva Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
A UNIX és Linux Fórum Tartalom Copyright © 1993-2009. Minden jog Reserved.Ad menedzsment RedTyger

Content Relevant URLs by vBSEO 3.2.0