The UNIX and Linux Forums  
Hallo und herzlich Willkommen aus den Vereinigten Staaten, die UNIX-und Linux-Foren! Vielen Dank für Ihren Besuch und die Teilnahme an unserem Global Community.

Go Back   Die UNIX-und Linux-Foren > Top Foren > Shell Programmierung und Scripting
.
Google unix.com



Shell Programmierung und Scripting Post Fragen zu ksh, csh, sh, bash, Perl, PHP, sed, awk und anderen Shell-Skripte und Shell-Scripting-Sprachen hier.

Mehr UNIX-und Linux-Forum Themen Vielleicht finden Sie hilfreiche
Faden Thread Starter Forum Antworten Last Post
Lesen und Schreiben einer Datei den Dateinamen auf eine Datei param. thebeginer UNIX für Fortgeschrittene und Experten 1 10-05-2007 04:38 PM
Verschüttete Excel-Datei im Unix - Soumya Dash Shell Programmierung und Scripting 1 09-25-2006 02:56 AM
Lesen Dateinamen aus einer Datei und die Ausführung des relativen Datei aus Shell-Skript anushilrai Shell Programmierung und Scripting 4 03-10-2006 05:25 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 Thread Tools Suche diesen Thread Rate Thread Anzeige-Modi
  #1 (permalink)  
Old 11-20-2007
deep_kol deep_kol is offline
Registrierte Nutzer
  
 

Join Date: Jun 2007
Beiträge: 14
Wie verschüttete eine Datei

Hi,
Ich habe eine Datei, abc.txt. wie

abc.txt
\u003d\u003d\u003d\u003d\u003d\u003d\u003d
KOKRS EL01 RLDNR M2 RRCTY 1
Buchungskreis 100
Geschäftsjahr 2007
Version PW3
Währung USD
1 2 3 4
1 2 3 4
BA Kontonummer Profit Ctr MRA Jan-Feb-TC TC
A 93010000 1530 152 1429793
A 93010000 9999 403 0 0 0
A 93010000 9999 404 -142
A 93010000 9999 411 0 0 0
A 93010000 9999 465 214538 214538 6114330
A 93010000 9999 487 0 -207918
A 93010000 471 502 0 0 0
A 93010000 9999 502 0 0 0

KOKRS EL01 RLDNR M2 RRCTY 1
Buchungskreis 152
Geschäftsjahr 2007
Version PW3
Währung GBP
1 2 3 4
1 2 3 4
BA Kontonummer Profit Ctr MRA Jan-Feb-TC TC
A 93010000 1200 152 0 0 0
A 93010000 9999 152 -57885 -16511 -537549
KOKRS EL01 RLDNR M2 RRCTY 1
.......
..... 500 Zeilen davon

Ich habe auf verschüttete diese Datei in verschiedene Dateien nach dem Buchungskreis.

ex:

abc_COMCODE_100.txt
\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d
KOKRS EL01 RLDNR M2 RRCTY 1
Buchungskreis 100
Geschäftsjahr 2007
Version PW3
Währung USD
1 2 3 4
1 2 3 4
BA Kontonummer Profit Ctr MRA Jan-Feb-TC TC
A 93010000 1530 152 1429793
A 93010000 9999 403 0 0 0
A 93010000 9999 404 -142
A 93010000 9999 411 0 0 0
A 93010000 9999 465 214538 214538 6114330
A 93010000 9999 487 0 -207918
A 93010000 471 502 0 0 0
A 93010000 9999 502 0 0 0


abc_COMCODE_152.txt
\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d
KOKRS EL01 RLDNR M2 RRCTY 1
Buchungskreis 152
Geschäftsjahr 2007
Version PW3
Währung GBP
1 2 3 4
1 2 3 4
BA Kontonummer Profit Ctr MRA Jan-Feb-TC TC
A 93010000 1200 152 0 0 0
A 93010000 9999 152 -57885 -16511 -537549



Bitte empfehlen Sie mir, wie man es durch verschüttetes Unix-Shell-Programm.

Vielen Dank im Voraus!
  #2 (permalink)  
Old 11-20-2007
vgersh99's Avatar
vgersh99 vgersh99 is online now Forum Staff  
Moderator
  
 

Join Date: Feb 2005
Ort: Boston, MA
Posts: 5119
nawk-f deep.awk abc.txt

deep.awk:
Code:
BEGIN {
  FS=RS=""

  prefix=substr(FILENAME, 1, index(FILENAME, ".")-1)
}
{
   root="unknown"
   for(i=1; i<=NF; i++)
      if ($i ~ "Company Code") {
         n=split($2, a, " ")
         root=a[n]
         break
      }
   out= prefix "_COMCODE_" root ".txt"
   print > out
   close(out)
}
  #3 (permalink)  
Old 11-20-2007
drl's Avatar
DRL drl is online now Forum Advisor  
Registrierte Nutzer
  
 

Join Date: Apr 2007
Ort: Saint Paul, MN USA / BSD, CentOS, Debian, OS X, Solaris
Beiträge: 706
Hi.

Command csplit wurde für diese:
Code:
#!/usr/bin/env sh

# @(#) s1       Demonstrate context split, csplit.

set -o nounset
echo

debug=":"
debug="echo"

## Use local command version for the commands in this demonstration.

echo "(Versions displayed with local utility \"version\")"
version >/dev/null 2>&1 && version bash csplit

echo

# Remove debris files.
rm -f xx*

FILE=${1-data1}

csplit --keep-files -z $FILE "/Company Code/-1" {*}

echo
echo " Files created:"
ls xx*

SAMPLE=xx01
echo
echo " Sample $SAMPLE:"
cat -n $SAMPLE

exit 0
Herstellung:
Code:
% ./s1

(Versions displayed with local utility "version")
GNU bash 2.05b.0
csplit (coreutils) 5.2.1

1
379
218
81

 Files created:
xx00  xx01  xx02  xx03

 Sample xx01:
     1  KOKRS EL01 RLDNR M2 RRCTY 1
     2  Company Code 100
     3  Fiscal Year 2007
     4  Version PW3
     5  Currency USD
     6  1 2 3 4
     7  1 2 3 4
     8  BA Account number Profit Ctr MRA Jan-TC Feb-TC
     9  A 93010000 1530 152 1429793
    10  A 93010000 9999 403 0 0 0
    11  A 93010000 9999 404 -142
    12  A 93010000 9999 411 0 0 0
    13  A 93010000 9999 465 214538 214538 6114330
    14  A 93010000 9999 487 0 -207918
    15  A 93010000 471 502 0 0 0
    16  A 93010000 9999 502 0 0 0
    17
Sehen Mann csplit Details ... cheers, DRL
  #4 (permalink)  
Old 11-20-2007
vgersh99's Avatar
vgersh99 vgersh99 is online now Forum Staff  
Moderator
  
 

Join Date: Feb 2005
Ort: Boston, MA
Posts: 5119
Es muss sich um ein GNU-ed-csplit - nicht fliegen auf Solaris.
Plus die Namenskonvention für die Dateien ist nicht das, was der OP wollte.
Coole Idee, aber - wie es!
  #5 (permalink)  
Old 11-20-2007
drl's Avatar
DRL drl is online now Forum Advisor  
Registrierte Nutzer
  
 

Join Date: Apr 2007
Ort: Saint Paul, MN USA / BSD, CentOS, Debian, OS X, Solaris
Beiträge: 706
Hi, vgersh99.
Zitat:
Zitat von vgersh99 View Post
Es muss sich um ein GNU-ed-csplit - nicht fliegen auf Solaris.
Plus die Namenskonvention für die Dateien ist nicht das, was der OP wollte.
Coole Idee, aber - wie es!
Danke für das Heads-Up. Ja, es ist GNU-coreutils csplit. Ich bin sicher, dass, wenn ich zurück war, die täglich mit Solaris csplit zur Verfügung. Falls es nicht funktioniert hat, wie haben sie nicht?

Ich habe versucht es auf einem FreeBSD-System 4/11, und es hat nur ein anämisch aufteilen mit einem Muster-Spiel hinzugefügt, aber keine csplit (noch gibt es sie auf OS X). Der GNUlange Optionen können in der Regel ersetzt werden mit einem Bindestrich-Optionen.

Es würde einem anderen Prozess, um die Zeichenfolge, um den Dateinamen, aber das ist eine gute Übung für den OP ... cheers, DRL
  #6 (permalink)  
Old 11-20-2007
deep_kol deep_kol is offline
Registrierte Nutzer
  
 

Join Date: Jun 2007
Beiträge: 14
Hallo Freunde,
Vielen Dank für Ihre Hilfe.
Ich bin Anfänger auf Unix. Ich arbeite in ksh und csh.
jetzt kann youuplease erklären, wie um diese.
abc.txt ist mein Dateinamen.

DRL sieht Ihre Lösung zu okay. aber ich bin nicht in der Lage, ausführen.
  #7 (permalink)  
Old 11-20-2007
radoulov's Avatar
radoulov radoulov is offline Forum Staff  
addict
  
 

Join Date: Jan 2007
Lage: Варна, България / Milano, Italia
Beiträge: 2847
Ein anderer:

Code:
awk 'FNR == 1 {
	pfx = substr(FILENAME, 1, 3) "_COMCODE_"
	}	
/^KOKRS/ {
	fn = 0
}
/^Company Code/ {
	close(fn)
	fn = pfx $3 ".txt"
	$0 = prev RS $0
	}
fn {
	print > fn
}
{
	prev = $0
}' abc.txt
Verwenden Sie nawk auf Solaris.

Bei einigen Implementierungen Awk (wie XPG Awk auf Solairs),
Sie sollten ausdrücklich:

Code:
awk 'FNR == 1 {
	pfx = substr(FILENAME, 1, 3) "_COMCODE_"
	}	
/^KOKRS/ {
	fn = 0
}
/^Company Code/ {
	close(fn)
	fn = pfx $3 ".txt"
	$0 = prev RS $0
	}
fn != 0 {
	print > fn
}
{
	prev = $0
}' abc.txt

PS vgersh99 der Vorwahl macht mehr Sinn, natürlich.

Zuletzt bearbeitet von radoulov; am 11-20-2007 06:38 PM.. Grund: ps
Closed Thread

Lesezeichen

Thread Tools Suche diesen Thread
Suche diesen Thread:

Erweiterte Suche
Anzeige-Modi Rate this thread
Rate this thread:

Forumregeln
Du möglicherweise nicht neue Themen
Du möglicherweise nicht nach Antworten
Du möglicherweise nicht post-Anlagen
Du möglicherweise nicht bearbeiten Sie Ihre Beiträge

BB-Code ist Auf
Smilies sind Auf
[IMG] Code Auf
HTML-Code ist Aus
Trackbacks sind Auf
Pingbacks sind Auf
Refbacks sind Auf




Alle Zeiten sind GMT -4. Es ist jetzt 10:12 PM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Ltd. Sprachliche Übersetzungen Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
Die UNIX-und Linux-Foren Content © Copyright 1993-2009. Alle Rechte Reserved.Ad Management von RedTyger

Content Relevant URLs durch vBSEO 3.2.0