Sponsored Content
Operating Systems Linux Red Hat Csplit command problem in Linux Post 302947898 by Sanjay_13 on Tuesday 23rd of June 2015 04:18:49 PM
Old 06-23-2015
Csplit command problem in Linux

Hi All,

I have recently join the forum and this is my first post....hoping to get a suggestion to a problem that I am facing.

I have a script that works well on ksh unix on AIX server. The below mentioned code checks number of records in an input file starting with 99 and splits it accordingly and creates new files. i.e. if there are two records starting with 99 then two new files are created.

Format of data in the input file:
10ABC 20150624
99ABC 20150624
10DEF 20150624
99DEF 20150624


Code:
SPLTNME=${FILENAME}_${$}
#--getting no. of footer records in the file
NUM=`grep "^99" ${FILENAME} | wc -l`
REPEAT=`expr $NUM - 2`
csplit -n4 -s -k -f ${SPLTNME} ${FILENAME} /^99/1 {$REPEAT} > /dev/null 2>&1

In case if there is a single 99 record in the input file, the value of REPEAT is set to -1. In AIX the code works and it looks like

Code:
csplit -n4 -s -k -f ${SPLTNME} ${FILENAME} /^99/1 {-1} > /dev/null 2>&1

Now, I am trying to run the same script in Linux, but the above "csplit" code is not working.

The "-1" value of repeat is not recognised in linux. I guess it only recognises postive integers where pattern repeatation is mentioned.

To fix this, I tried hardcoding positive value like 1...it worked but created two files instead and out of the two, one is 0 byte file. It seems that the above csplit code line needs modification in order to run it in Linux.

Could you please suggest any alternative to make this part of the code work in linux.

Details of Linux version is: Red Hat Linux release 6.6 (Santiago)
shell: ksh

Thanks,
Sanjay

Last edited by vbe; 06-23-2015 at 06:32 PM..
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

csplit problem....please help me

Dear Friends, please help me. I am using csplit to split the files, i.e., csplit -f filetype_ -n 3 filename '/regexpn/' {5} which will split file "filename" into 5 subfiles filetype_000 filetype_001 filetype_002 filetype_003 filetype_004 but if I run the csplit commad again it will... (2 Replies)
Discussion started by: kumar1
2 Replies

2. Shell Programming and Scripting

Problem with csplit

Hi All, I have a strange behaviour from csplit command on some text files. I have a comma separated file and data with in double quotes. This file is being generated from Sequential stage of Data stage tool. This file has 67 fields in each records with some null and blank in the data.... (4 Replies)
Discussion started by: shreekrishnagd
4 Replies

3. UNIX for Dummies Questions & Answers

Problem executing find file command in Linux

When trying to find a list of files with specific text in them using find . -type f -exec grep -l "DataStage Job 4263" {}\; I get error find: missing argument to 'exec' How can I correct this ? I'm on Linux Red Hat. Cheers PS I'm a DataStage programmer not a systems support... (4 Replies)
Discussion started by: jackdaw_at_work
4 Replies

4. Shell Programming and Scripting

csplit issue

Hello all The below command works perfeft when executed from the shell prompt. "csplit -f first Allocation.log.1 "%. Oct 02 .%" {1} " and generates first00 file. But it fails if I include the same command in my script. I am trying to automate some process and this is turning... (1 Reply)
Discussion started by: uandme2k2
1 Replies

5. Shell Programming and Scripting

CSPLIT help

I have a file with contents <wmqi> sdf sdf sdffghghhjjfh </wmqi> <wmqi> gh dfg hhjhj sdfsdf g </wmqi> <wmqi> dfgdf fg dfgfg </wmqi> <wmqi> (6 Replies)
Discussion started by: Shivdatta
6 Replies

6. UNIX for Dummies Questions & Answers

Linux scripting problem using ps command

when I try to apply this principle to my script, is not working, it tells me something like 'command not found' what i wrote is this.. if ; then echo "message1"; else echo "message2"; fi I'm supposed to count number of processes of the user, and if they're five or more, then a message... (2 Replies)
Discussion started by: aric87
2 Replies

7. UNIX for Dummies Questions & Answers

csplit to stdout

I want to split big files based on a pattern to stdout. Although csplit works well for me splitting the output into separate files (e.g. xx00, xx01, xx02, ...), the following is not working as expected: <code> # assuming pattern occurs less than 100 times csplit bigfile '%pattern%'... (2 Replies)
Discussion started by: uiop44
2 Replies

8. Ubuntu

problem in linux ubuntu 10.10 about mail command

Hi, My question is that is there any substitute command for mail in ubuntu because I'm trying to run it and it is showing error: command not found!! Will it need to download any specific package? If so please tell me how can I download that pkg. Thanks in advance. (1 Reply)
Discussion started by: nageshgautam
1 Replies

9. Shell Programming and Scripting

simple csplit problem

Hello am trying to split the following top output at the TTY line but having some issues: System: msisprd Sun Oct 9 09:35:37 2011 Load averages: 0.14, 0.17, 0.16 411 processes: 361 sleeping, 50 running Cpu states: CPU LOAD USER NICE SYS ... (3 Replies)
Discussion started by: delphys
3 Replies

10. UNIX for Beginners Questions & Answers

Linux csplit command

Input file: CLK00027 TESTDATA 0 S 600000 \r 0001RFC 192321 321321 321321 \r 0002 rfd this is testdata1 CLK00027 TESTDATA 0 S 600000 \r 0001RFC 192321 321321 321321 \r 0002 rfd this is testdata2 I Need to split this file into seperate files file1.txt CLK00027 ... (1 Reply)
Discussion started by: VXANDERB
1 Replies
CSPLIT(1)								FSF								 CSPLIT(1)

NAME
csplit - split a file into sections determined by context lines SYNOPSIS
csplit [OPTION]... FILE PATTERN... DESCRIPTION
Output pieces of FILE separated by PATTERN(s) to files `xx01', `xx02', ..., and output byte counts of each piece to standard output. Mandatory arguments to long options are mandatory for short options too. -b, --suffix-format=FORMAT use sprintf FORMAT instead of %d -f, --prefix=PREFIX use PREFIX instead of `xx' -k, --keep-files do not remove output files on errors -n, --digits=DIGITS use specified number of digits instead of 2 -s, --quiet, --silent do not print counts of output file sizes -z, --elide-empty-files remove empty output files --help display this help and exit --version output version information and exit Read standard input if FILE is -. Each PATTERN may be: INTEGER copy up to but not including specified line number /REGEXP/[OFFSET] copy up to but not including a matching line %REGEXP%[OFFSET] skip to, but not including a matching line {INTEGER} repeat the previous pattern specified number of times {*} repeat the previous pattern as many times as possible A line OFFSET is a required `+' or `-' followed by a positive integer. AUTHOR
Written by Stuart Kemp and David MacKenzie. REPORTING BUGS
Report bugs to <bug-coreutils@gnu.org>. COPYRIGHT
Copyright (C) 2002 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICU- LAR PURPOSE. SEE ALSO
The full documentation for csplit is maintained as a Texinfo manual. If the info and csplit programs are properly installed at your site, the command info csplit should give you access to the complete manual. csplit (coreutils) 4.5.3 February 2003 CSPLIT(1)
All times are GMT -4. The time now is 11:28 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy