A command to split a file into two based on a string


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting A command to split a file into two based on a string
# 8  
Old 07-17-2013
I'f you know you only have a few different record types you could try something like this:

Code:
awk '{ print > "file." substr($0,length-1) }' RAW


otherwise try
Code:
awk '
/T0$/ { print > "file1" ; next }
/P1$/ { print > "file2" ; next }
/P2$/ { print > "file3" ; next }
/P3$/ { print > "file4" ; next }
{ print > "file.UNKNOWN" }' RAW

This User Gave Thanks to Chubler_XL For This Post:
# 9  
Old 07-17-2013
Thank you. i did the first method and changed a little

awk '{print > "file.txt" susbtr($0,length-2) }' RAW

i did length -2 to get the TO, P1 etc appended to output files and also added ..txt hoping i would get fileT0.txt, fileP1.txt but i get file.txtT0, file.txtP1.

is there a way to have it saved as .txt extension when it outputs?

Thanks
# 10  
Old 07-17-2013
Code:
awk '{print > "file"$NF".txt"}' RAW

This User Gave Thanks to tukuyomi For This Post:
# 11  
Old 07-17-2013
Works perfect. thanks again

---------- Post updated at 04:54 PM ---------- Previous update was at 04:43 PM ----------

sorry to bother again but when i use ls command to list it the file is displayed as fileT0?.txt. it opens in my ubuntu machine but when i try to copy it into windows box, it doesn't open because the file is displayed as fileT0 .txt.(there is a space). i am not able to rename it nor copy it.

any help?
# 12  
Old 07-17-2013
I suspect your RAW file to have \r\n at the end of each line (typically all txt files created from MS Windows notepad). You have to remove \r from the original file. Try (not tested)
Code:
tr '\r\n' '\n' RAW > RAW.1

and retry the awk script with RAW1
# 13  
Old 07-17-2013
The file was received from a client and they said it was from z/OS system. i tried the code but it says 'tr - extra operand' and the output file is 0 byte

---------- Post updated at 05:21 PM ---------- Previous update was at 05:15 PM ----------

i opened the raw file in notepad++ and has the [CR][LF] at the end of each line

like

..........................T0[CR][LF]
..........................P1[CR][LF]
..........................P2[CR][LF]
..........................P2[CR][LF]
..........................P2[CR][LF]
# 14  
Old 07-17-2013
Quote:
Originally Posted by tukuyomi
I suspect your RAW file to have \r\n at the end of each line (typically all txt files created from MS Windows notepad). You have to remove \r from the original file. Try (not tested)
Code:
tr '\r\n' '\n' RAW > RAW.1

and retry the awk script with RAW1
tr does not work that way. It deals with individual characters, not strings. Since you gave it two characters on the input, it's expecting 2 characters on the output, too.

This should work:

Code:
tr -d '\r' < input > output

These 2 Users Gave Thanks to Corona688 For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Split File based on different conditions

I need to split the file Conditions: Ignore any record that either starts with 1 or 9 Split the file at position 404 , if position 404 is abc or def then write all the records in a file > File 1 , the remaining records should go in to a file > File 2 Further I want to split the... (7 Replies)
Discussion started by: protech
7 Replies

2. Shell Programming and Scripting

How to Split File based on String?

hi , The scenario is like this, i have a large text files (max 5MB , about 5000 file per day ), Inside almost each line of this file there is a tag 3100.2.22.1 (represent Call_Type) , i need to generate many filess , each one with distinct (3100.2.22.1 Call_Type ) , and one more file to... (3 Replies)
Discussion started by: OTNA
3 Replies

3. Shell Programming and Scripting

Split file based on records

I have to split a file based on number of lines and the below command works fine: split -l 2 Inputfile -d OutputfileMy input file contains header, detail and trailor info as below: H D D D D TMy split files for the above command contains: First File: H DSecond File: ... (11 Replies)
Discussion started by: Ajay Venkatesan
11 Replies

4. Shell Programming and Scripting

KSH: Split String into smaller substrings based on count

KSH HP-SOL-Lin Cannot use xAWK I have several strings that are quite long and i want to break them down into smaller substrings. What I have String = "word1 word2 word3 word4 .....wordx" What I want String1="word1 word2" String2="word 3 word4" String3="word4 word5" Stringx="wordx... (5 Replies)
Discussion started by: nitrobass24
5 Replies

5. Shell Programming and Scripting

sed or awk command to replace a string pattern with another string based on position of this string

here is what i want to achieve... consider a file contains below contents. the file size is large about 60mb cat dump.sql INSERT INTO `table1` (`id`, `action`, `date`, `descrip`, `lastModified`) VALUES (1,'Change','2011-05-05 00:00:00','Account Updated','2012-02-10... (10 Replies)
Discussion started by: vivek d r
10 Replies

6. UNIX for Dummies Questions & Answers

Command to split the files based on the number of lines in it

Hello Friends, Can anyone help me for the below requirement. I am having a file called Input.txt. My requirement is first check the count that is wc -l input.txt If the result of the wc -l Input.txt is less than 10 then don't split the Input.txt file. Where as if Input.txt >= 10 the split... (12 Replies)
Discussion started by: malaya kumar
12 Replies

7. Shell Programming and Scripting

Split file based on size

Hi Friends, Below is my requirement. I have a file with the below structure. 0001A1.... 0001B1.. .... 0001L1 0002A1 0002B1 ...... 0002L1 .. the first 4 characters are the sequence numbers for a record, A record will start with A1 and end with L1 with same sequence number. Now the... (2 Replies)
Discussion started by: diva_thilak
2 Replies

8. Shell Programming and Scripting

AWK Command parse a file based on string.

AWK Command parse a file based on string. I am trying to write a shell script to parse a file based on a string and move the content of the file to another file. Here is scenario. File content below Mime-Version: 1.0 Content-Type: multipart/mixed; ... (2 Replies)
Discussion started by: aakishore
2 Replies

9. Shell Programming and Scripting

bash: How to split up a file based on another?

I've got these 2 files, FILE.txt and SPLIT_BY.txt: FILE.txt contents: FILE01 FILE02 FILE03 FILE04 FILE05 FILE06 FILE07 FILE08 FILE09 FILE10 FILE11 FILE12 FILE13 FILE14 FILE15SPLIT_BY.txt contents: 2 5 (4 Replies)
Discussion started by: byte711
4 Replies

10. Shell Programming and Scripting

How to split the String based on condition?

hi , I have a String str="/opt/ibm/lotus/ibw/latest" or ="/opt/lotus/ibw/latest" this value is dynamic..I want to split this string into 2 strings 1. /opt/ibm/lotus(/opt/lotus) this string must ends with "lotus" 2./ibw/latest can any body help me on this? Regards, sankar (2 Replies)
Discussion started by: sankar reddy
2 Replies
Login or Register to Ask a Question