09-24-2007
Splitting file in 2 at specific place based on textpattern
I have a file that I want to split in 2 (with Bourne shell sh) preferably. The file consists of groups of lines separated by newline. The file can vary in length, so I need to check number of groups of text. Here's an example
====EXAMPLE START====
#fruit banana
#color yellow
#surface smooth
size 20cm
#fruit apple
#color green
#surface smooth
size 7cm
#fruit grape
#color green
#surface smooth
size 2cm
====EXAMPLE STOP====
I want to split the file in 2 equal pieces in the sense that there will be equal amount of "fruits" (or groups of texts) in each. But the file should only be split just before a "#fruit" tag so that no fruit-text is split in the middle.
By equal pieces I mean that if the file has data for 4 fruits it should split it so that I will have 2 files with 2 fruits in both. 3 fruits should split to 2+1. 7 fruits should split to 4+3 a.s.f. The example above would result in 2 files:
======
File1:
#fruit banana
#color yellow
#surface smooth
size 20cm
#fruit apple
#color green
#surface smooth
size 7cm
======
File2:
#fruit grape
#color green
#surface smooth
size 2cm
======
I can easily find number of fruits by doing:
i=`grep "# fruit" fruitfile | wc -l`
...and then find after which group I should split:
j=`expr $i / 2`
But from here I am more unsure.
Borge
Last edited by borgeh; 09-26-2007 at 09:59 AM..
Reason: Better examples
10 More Discussions You Might Find Interesting
1. Shell Programming and Scripting
Hello,
I need to search in file2 for
class A : public B
{
and insert right after that the content of file1.
I am a bit lost as to which tools (which bash functions, awk...). I should use. Thanks for some directions here.
Regards (1 Reply)
Discussion started by: JCR
1 Replies
2. UNIX for Advanced & Expert Users
I have a file that I want to split in 2 (with Bourne shell sh) preferably. The file is a configuration file for several elements and hence consists of a repeated configuration pattern like this:
config.txt:
#fruit banana
#color yellow
#surface smooth
size 20cm
#fruit apple
#color green... (6 Replies)
Discussion started by: borgeh
6 Replies
3. Shell Programming and Scripting
If I cat a file
And want to go to the first instance of a particular value - what command would I use?
And then from that point where I jumped to search for another value - but only search from that point forward not before the file?
Thanks~ (2 Replies)
Discussion started by: llsmr777
2 Replies
4. Shell Programming and Scripting
Hello
I have a requirement where i need to split the Input fixed width file which contains multiple invoices into multiple files with 2 invoices per file.
Each invoice can be identified by its first line's second character which is "H" and sixth character is " " space and the invoice would... (10 Replies)
Discussion started by: dsdev_123
10 Replies
5. UNIX for Dummies Questions & Answers
I have an input file of this format
<Date><other data>
For example,
20081213aaaaaaaaa
20081213bbbbbbbbb
20081220ccccccccc
20081220ddddddddd
20081220eeeeeeeee
20081227ffffffffffffff
The first 8 chars are date in YYYYMMDD formT. I need to split this file into n files where n is the... (9 Replies)
Discussion started by: paruthiveeran
9 Replies
6. Shell Programming and Scripting
Hello, I am using tcsh on AIX.
I would like to write a script that does the following:
1. given an inode, how do I find exactly the name of the file?
I know I could do this using ls -i | grep <inode>
but it returns: <inode> <filename>. I need some string manipulation or something to... (1 Reply)
Discussion started by: lastZenMaster
1 Replies
7. Shell Programming and Scripting
I use zentyal for my server admin, which is great but zentyal auto-generates config file on boot and hence overwrites any changes made directly to config files. In order to allow multiple user access to a MS ACCESS database, I need to customise the smb.conf file and add the following line to the... (9 Replies)
Discussion started by: barrydocks
9 Replies
8. Shell Programming and Scripting
Hello,
I'm trying to create multiple commands using a variable input from another file but am not getting any successful results.
Basically, file1.txt contains multiple lines with single words:
<file1.txt>
yellow
blue
black
white
I want to create multiple echo commands with these... (8 Replies)
Discussion started by: demmel
8 Replies
9. Shell Programming and Scripting
I am trying to use awk to place the contens of a filename in $1 and $2 followed by the data in the text file. Basically, put the filename within the text file. There are over 1000 files in the directory and as of now each file is saved with a unique name but it is not within the file. Thank you... (10 Replies)
Discussion started by: cmccabe
10 Replies
10. UNIX for Beginners Questions & Answers
Hi All,
I am having a problem. I tried to extract the chunk of data and tried to fix I am not able to. Any help please
Basically I need to remove the for , values after K,
this is how it is now
A,,
B,
C,C,
D,D,
12/04/10,12/04/10,
K,1,1,1,1,0,3.0,
K,1,1,1,2,0,4.0,... (2 Replies)
Discussion started by: arunkumar_mca
2 Replies
LEARN ABOUT DEBIAN
platform::shell
platform::shell(3tcl) Tcl Bundled Packages platform::shell(3tcl)
__________________________________________________________________________________________________________________________________________________
NAME
platform::shell - System identification support code and utilities
SYNOPSIS
package require platform::shell ?1.1.4?
platform::shell::generic shell
platform::shell::identify shell
platform::shell::platform shell
_________________________________________________________________
DESCRIPTION
The platform::shell package provides several utility commands useful for the identification of the architecture of a specific Tcl shell.
This package allows the identification of the architecture of a specific Tcl shell different from the shell running the package. The only
requirement is that the other shell (identified by its path), is actually executable on the current machine.
While for most platform this means that the architecture of the interrogated shell is identical to the architecture of the running shell
this is not generally true. A counter example are all platforms which have 32 and 64 bit variants and where a 64bit system is able to run
32bit code. For these running and interrogated shell may have different 32/64 bit settings and thus different identifiers.
For applications like a code repository it is important to identify the architecture of the shell which will actually run the installed
packages, versus the architecture of the shell running the repository software.
COMMANDS
platform::shell::identify shell
This command does the same identification as platform::identify, for the specified Tcl shell, in contrast to the running shell.
platform::shell::generic shell
This command does the same identification as platform::generic, for the specified Tcl shell, in contrast to the running shell.
platform::shell::platform shell
This command returns the contents of tcl_platform(platform) for the specified Tcl shell.
KEYWORDS
operating system, cpu architecture, platform, architecture
platform::shell 1.1.4 platform::shell(3tcl)