![]() |
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.
|
|
Google unix.com
|
|||||||
| Foren | Registrieren | Forum-Regeln | Links | Alben | FAQ | Benutzerliste | Kalender | Suche | Die heutige Beiträge | Alle Foren als gelesen markieren |
| 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 |
![]() |
|
|
LinkBack | Thread Tools | Suche diesen Thread | Rate Thread | Anzeige-Modi |
|
|
|
||||
|
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! |
|
|||||
|
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
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
|
|
|||||
|
Hi, vgersh99.
Zitat:
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 |
|
||||
|
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. |
|
|||||
|
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
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 |
![]() |
| Lesezeichen |
| Thread Tools | Suche diesen Thread |
| Anzeige-Modi | Rate this thread |
|
|