Linux csplit command


 
Thread Tools Search this Thread
Top Forums UNIX for Beginners Questions & Answers Linux csplit command
# 1  
Old 09-06-2019
Linux csplit command

Input file:

Code:
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

Code:
file1.txt 

CLK00027   TESTDATA 0 S 600000 0001RFC    192321 321321 321321 0002 rfd  this is testdata1


file2.txt
CLK00027   TESTDATA 0 S 600000 0001RFC    192321 321321 321321 0002 rfd  this is testdata1

I am using a csplit command
Code:
csplit -b "%04d.$$.txt" $1 '/CLK0027/' {*}


this is working perfectly, however it splits the files and keeps the individual output files on seperate lines.



I need to (while the csplit is happening) write this out to a single line in the new separated files.

Not getting this to work.

a few things to note this file could be extremely large so whatever is used need to be able to handle very large amounts of characters in the file.

each CLK00027 is the start of a new file.

If I change my input to be on one line, then the csplit doesnt work and only writes out one file where I need an output file per "CLK0027" value.

Moderator's Comments:
Mod Comment Please do wrap your samples in code tags as per forum rules.

Last edited by RavinderSingh13; 09-06-2019 at 07:39 AM..
# 2  
Old 09-06-2019
I don't think that can be done with csplit. Try this little awk script instead:
Code:
awk -vPID=$$ '
NR == 1 ||
/CLK00027/      {if (FN) printf RS > FN
                 FN = sprintf ("xx%04d.%s.txt", CNT++, PID)
                }
                {printf "%s ", $0 > FN
                }
END             {printf RS > FN
                }
' file
cf xx000?*

---------- xx0000.1867.txt: ----------

CLK00027 TESTDATA 0 S 600000 \r 0001RFC 192321 321321 321321 \r 0002 rfd this is testdata1 

---------- xx0001.1867.txt: ----------

CLK00027 TESTDATA 0 S 600000 \r 0001RFC 192321 321321 321321 \r 0002 rfd this is testdata2

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Red Hat

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... (1 Reply)
Discussion started by: Sanjay_13
1 Replies

2. 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

3. 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

4. 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

5. 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

6. 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

7. UNIX for Dummies Questions & Answers

Split files using Csplit

I have an excel file with more than 65K records... Since excel does not take more than 65K records i wan to split the file and send it as two excel files... Could some help me how to use the csplit by specifiying the no of records (7 Replies)
Discussion started by: savitha
7 Replies

8. UNIX for Dummies Questions & Answers

csplit limitations

I am trying to use the csplit file on a file that contains records that have more than 2048 characters on a line. The resultant split file seems to ignore the rest of the line and I lose the data. Is there any way that csplit can handle record lengths greater than 2048? Thanks (0 Replies)
Discussion started by: ravagga
0 Replies

9. UNIX for Advanced & Expert Users

csplit not behaving

I have a large file with the first 2 characters of each line determining the type of record. type 03 being a subheader and then it will have multiple 04 records. eg: 03,xxx,xxxx,xxxx 04,xxxxxxxxxxxxxxxxxxxxxxxxxxxx 04,xxxxxxxxxxxxxxxxxxxxxxxxxxxx 03,xxx,xxx,xxx ... (2 Replies)
Discussion started by: badg3r
2 Replies

10. 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
Login or Register to Ask a Question