Sponsored Content
Top Forums UNIX for Dummies Questions & Answers Split single file into n number of files Post 302552959 by quirkguy on Tuesday 6th of September 2011 08:02:30 AM
Old 09-06-2011
Split single file into n number of files

Hi,

I am new to unix. we have a requirement here to split a single file into multiples files based on the number of people available for processing. So i tried my hand at writing some code as below.
Code:
#!/bin/bash
var1=`wc -l $filename`
var2=$var1/$splitno
split -l $var2 $1

Please help me to get the code right manner...

Thanks

Last edited by Franklin52; 09-07-2011 at 03:38 AM.. Reason: Please use code tags for code and data samples, thank you
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

split single file into many

Hello, We have a text file with more than 1500 paragraphs. There is a blank line to separate paragraphs. We need to create one text file (with any name but unique) per paragraph. In other words, how can i extract each paragraph and create a separate file with those contents (so 1500 text... (3 Replies)
Discussion started by: prvnrk
3 Replies

2. UNIX for Dummies Questions & Answers

split a single sql file into multiple files

Hi,I have a single sql file containing many create table ddl's.Example: CREATE TABLE sec_afs ( rpt_per_typ_c char(1) NOT NULL, rpt_per_typ_t varchar(20) NULL, LOCK ALLPAGES go EXEC sp_primarykey 'sec_afs', rpt_per_typ_c go GRANT SELECT ON sec_afs TO developer_read_only... (5 Replies)
Discussion started by: smarter_aries
5 Replies

3. UNIX for Dummies Questions & Answers

split a file into a specified number of files

I have been googling on the 'split' unix command to see if it can split a large file into 'n' number of files. Can anyone spare an example or a code snippet? Thanks, - CB (2 Replies)
Discussion started by: ChicagoBlues
2 Replies

4. Shell Programming and Scripting

Split single file into multiple files based on the number in the column

Dear All, I would like to split a file of the following format into multiple files based on the number in the 6th column (numbers 1, 2, 3...): ATOM 1 N GLY A 1 -3.198 27.537 -5.958 1.00 0.00 N ATOM 2 CA GLY A 1 -2.199 28.399 -6.617 1.00 0.00 ... (3 Replies)
Discussion started by: tomasl
3 Replies

5. Shell Programming and Scripting

Split the single file lines into multiple files

Let's assume that I have a file name called ‘A' and it has 100 lines in it and would like to split these 100 lines into 4 files as specified bellow. INPUT: Input file name A 1 2 3 4 5 6 7 8 9 ........100 Output: 4 output files (x,y,z,w) File x should contains (Skip 4 lines)... (15 Replies)
Discussion started by: subbarao25
15 Replies

6. Shell Programming and Scripting

split a csv file into specified number of files (not lines)

hi, i really need it ...it's not simple to explain but as it's part of a crontab i can't split the file manually...and the file can change every day so the lines are not a good base. example: how to split 1 csv file in 15 files? thank you very much regards :b: (4 Replies)
Discussion started by: 7stars
4 Replies

7. UNIX for Dummies Questions & Answers

How to separate a single column file into files of the same size (i.e. number of rows)?

I have a text file with 1,000,000 rows (It is a single column text file of numbers). I would like to separate the text file into 100 files of equal size (i.e. number of rows). The first file will contain the first 10,000 rows, the second row will contain the second 10,000 rows (rows 10,001-20,000)... (2 Replies)
Discussion started by: evelibertine
2 Replies

8. Shell Programming and Scripting

Split single file into multiple files using pattern matching

I have one single shown below and I need to break each ST|850 & SE to separate file using unix script. Below example should create 3 files. We can use ST & SE to filter as these field names will remain same. Please advice with the unix code. ST|850 BEG|PO|1234 LIN|1|23 SE|4 ST|850... (3 Replies)
Discussion started by: prasadm
3 Replies

9. UNIX for Dummies Questions & Answers

Split files into smaller ones with 1000 hierarchies in a single file.

input file: AD,00,--,---,---,---,---,---,---,--,--,--- AM,000,---,---,---,---,---,--- AR, ,---,--,---,--- AA,---,---,---,--- AT,--- AU,---,---,--- AS,---,--- AP,---,---,--- AI,--- AD,00,---,---,---, ,---,---,---,---,---,--- AM,000,---,---,--- AR,... (6 Replies)
Discussion started by: kcdg859
6 Replies

10. Shell Programming and Scripting

Split a single file into multiple files based on a value.

Hi All, I have the sales_data.csv file in the directory as below. SDDCCR; SOM ; MD6546474777 ;05-JAN-16 ABC ; KIRAN ; CB789 ;04-JAN-16 ABC ; RAMANA; KS566767477747 ;06-JAN-16 ABC ; KAMESH; A33535335 ;04-JAN-16 SDDCCR; DINESH; GD6674474747 ;08-JAN-16... (4 Replies)
Discussion started by: ROCK_PLSQL
4 Replies
Test::LectroTest::Property(3pm) 			User Contributed Perl Documentation			   Test::LectroTest::Property(3pm)

NAME
Test::LectroTest::Property - Properties that make testable claims about your software SYNOPSIS
use MyModule; # provides my_function_to_test use Test::LectroTest::Generator qw( :common ); use Test::LectroTest::Property qw( Test ); use Test::LectroTest::TestRunner; my $prop_non_neg = Property { ##[ x <- Int, y <- Int ]## $tcon->label("negative") if $x < 0; $tcon->label("odd") if $x % 2; $tcon->retry if $y == 0; # 0 can't be used in test my_function_to_test( $x, $y ) >= 0; }, name => "my_function_to_test output is non-negative"; my $runner = Test::LectroTest::TestRunner->new(); $runner->run_suite( $prop_non_neg, # ... more properties here ... ); DESCRIPTION
STOP! If you're just looking for an easy way to write and run unit tests, see Test::LectroTest first. Once you're comfortable with what is presented there and ready to delve into the full offerings of properties, this is the document for you. This module allows you to define Properties that can be checked automatically by Test::LectroTest. A Property is a specification of your software's required behavior over a given set of conditions. The set of conditions is given by a generator-binding specification. The required behavior is defined implicitly by a block of code that tests your software for a given set of generated conditions; if your software matches the expected behavor, the block of code returns true; otherwise, false. This documentation serves as reference documentation for LectroTest Properties. If you don't understand the basics of Properties yet, see "OVERVIEW" in Test::LectroTest::Tutorial before continuing. Two ways to create Properties There are two ways to create a property: 1. Use the "Property" function to promote a block of code that contains both a generator-binding specification and a behavior test into a Test::LectroTest::Property object. This is the preferred method. Example: my $prop1 = Property { ##[ x <- Int ]## thing_to_test($x) >= 0; }, name => "thing_to_test is non-negative"; 2. Use the "new" method of Test::LectroTest::Property and provide it with the necessary ingredients via named parameters: my $prop2 = Test::LectroTest::Property->new( inputs => [ x => Int ], test => sub { my ($tcon,$x) = @_; thing_to_test($x) >= 0 }, name => "thing_to_test is non-negative" ); Both are equivalent, but the first is concise, easier to read, and lets LectroTest do some of the heavy lifting for you. The second is probably better, however, if you are constructing property specifications programmatically. Generator-binding specification The generator-binding specification declares that certain variables are to be bound to certain kinds of random-value generators during the tests of your software's behavior. The number and kind of generators define the "condition space" that is examined during property checks. If you use the "Property" function to create your properties, your generator-binding specification must come first in your code block, and you must use the following syntax: ##[ var1 <- gen1, var2 <- gen2, ... ]## Comments are not allowed within the specification, but you may break it across multiple lines: ##[ var1 <- gen1, var2 <- gen2, ... ]## or ##[ var1 <- gen1, var2 <- gen2, ... ]## Further, for better integration with syntax-highlighting IDEs, the terminating "]##" delimiter may be preceded by a hash symbol "#" and optional whitespace to make it appear like a comment: ##[ var1 <- gen1, var2 <- gen2, ... # ]## On the other hand, if you use "Test::LectroTest::Property->new()" to create your objects, the generator-binding specification takes the form of an array reference containing variable-generator pairs that is passed to "new()" via the parameter named "inputs": inputs => [ var1 => gen1, var2 => gen2, ... ] Normal Perl syntax applies here. Specifying multiple sets of generator bindings Sometimes you may want to repeat a property check with multiple sets of generator bindings. This can happen, for instance, when your condition space is vast and you want to ensure that a particular portion of it receives focused coverage while still sampling the overall space. For times like this, you can list multiple sets of bindings within the "##[" and "]##" delimiters, like so: ##[ var1 <- gen1A, ... ], [ var1 <- gen1B, ... ], ... more sets of bindings ... [ var1 <- gen1N, ... ]## Note that only the first and last set need the special delimiters. The equivalent when using "new()" is as follows: inputs => [ [ var1 => gen1A, ... ], [ var1 => gen1B, ... ], ... [ var1 => gen1N, ... ] ] Regardless of how you declare the sets of bindings, each set must provide bindings for the exact same set of variables. (The generators, of course, can be different.) For example, this kind of thing is illegal: ##[ x <- Int ], [ y <- Int ]## The above is illegal because both sets of bindings must use x or both must use y; they can't each use a different variable. ##[ x <- Int ], [ x <- Int, y <- Float ]## The above is illegal because the second set has an extra variable that isn't present in the first. Both sets must use exactly the same variables. None of the variables may be extra, none may be missing, and all must be named identically across the sets of bindings. Behavior test The behavior test is a subroutine that accepts a test-controller object and a given set of input conditions, tests your software's observed behavior against the required behavior with respect to the input conditions, and returns true or false to indicate acceptance or rejection. If you are using the "Property" function to create your property objects, lexically bound variables are created and loaded with values automatically, per your input-generator specification, so you can just go ahead and use the variables immediately: my $prop = Property { ##[ i <- Int, delta <- Float(range=>[0,1]) ]## my $lo_val = my_thing_to_test($i); my $hi_val = my_thing_to_test($i + $delta); $lo_val == $hi_val; }, name => "my_thing_to_test ignores fractions" ; On the other hand, if you are using "Test::LectroTest::Property->new()", you must declare and initialize these variables manually from Perl's @_ variable in lexicographically increasing order after receiving $tcon, the test controller object. (This inconvenience, by the way, is why the former method is preferred.) The hard way: my $prop = Test::LectroTest::Property->new( inputs => [ i => Int, delta => Float(range=>[0,1]) ], test => sub { my ($tcon, $delta, $i) = @_; my $lo_val = my_thing_to_test($i); my $hi_val = my_thing_to_test($i + $delta); $lo_val == $hi_val }, name => "my_thing_to_test ignores fractions" ) ; Control logic, retries, and labeling Inside the behavior test, you have access to a special variable $tcon that allows you to interact with the test controller. Through $tcon you can do the following: o retry the current trial with different inputs (if you don't like the inputs you were given at first) o add labels to the current trial for reporting purposes o attach notes and variable dumps to the current trial for diagnostic purposes, should the trial fail (For the full details of what you can do with $tcon see the "testcontroller" section of Test::LectroTest::TestRunner.) For example, let's say that we have written a function "my_sqrt" that returns the square root of its input. In order to check whether our implementation fulfills the mathematical definition of square root, we might specify the following property: my $epsilon = 0.000_001; Property { ##[ x <- Float ]## return $tcon->retry if $x < 0; $tcon->label("less than one") if $x < 1; my $sx = my_sqrt( $x ); abs($sx * $sx - $x) < $epsilon; }, name => "my_sqrt satisfies defn of square root"; Because we don't want to deal with imaginary numbers, our square-root function is defined only over non-negative numbers. To make sure we don't accidentally check our property "at" a negative number, we use the following line to re-start the trial with a different input should the input we are given at first be negative: return $tcon->retry if $x < 0; An interesting fact is that for all values x between zero and one, the square root of x is larger than x itself. Perhaps our implementation treats such values as a special case. In order to be confident that we are checking this case, we added the following line: $tcon->label("less than one") if $x < 1; In the property-check output, we can see what percentage of the trials checked this case: 1..1 ok 1 - 'my_sqrt satisfies defn of square root' (1000 attempts) # 1% less than one Trivial cases Random-input generators may create some inputs that are trivial and don't provide much testing value. To make it easy to label such cases, you can use the following from within your behavior tests: $tcon->trivial if ... ; The above is exactly equivalent to the following: $tcon->label("trivial") if ... ; SEE ALSO
Test::LectroTest::Generator describes the many generators and generator combinators that you can use to define the test or condition spaces that you want LectroTest to search for bugs. Test::LectroTest::TestRunner describes the objects that check your properties and tells you how to turn their control knobs. You'll want to look here if you're interested in customizing the testing procedure. HERE BE SOURCE FILTERS
The special syntax used to specify generator bindings relies upon a source filter (see Filter::Util::Call). If you don't want to use the syntax, you can disable the filter like so: use Test::LectroTest::Property qw( NO_FILTER ); LECTROTEST HOME
The LectroTest home is http://community.moertel.com/LectroTest. There you will find more documentation, presentations, mailing-list archives, a wiki, and other helpful LectroTest-related resources. It's also the best place to ask questions. AUTHOR
Tom Moertel (tom@moertel.com) INSPIRATION
The LectroTest project was inspired by Haskell's QuickCheck module by Koen Claessen and John Hughes: http://www.cs.chalmers.se/~rjmh/QuickCheck/. COPYRIGHT and LICENSE Copyright (c) 2004-05 by Thomas G Moertel. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. perl v5.12.3 2007-08-30 Test::LectroTest::Property(3pm)
All times are GMT -4. The time now is 11:01 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy