How to extract every repeated string between two specific string?


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting How to extract every repeated string between two specific string?
# 15  
Old 10-08-2014
Quote:
Originally Posted by Chubler_XL
How about this this:

Code:
awk '
length {
  sub("ETX.*", "ETX")
  print RS $0 > "file" ++n ".txt"
  close ("file" n ".txt")
}' RS="SOH" infile

... ... ...
Although this will work well with come versions of awk, the standards say that the behavior of awk is unspecified if the value of RS contains more than one character. On OS X (and several other systems), the above code will just use "S" as the record separator and ignore the "OH".
These 2 Users Gave Thanks to Don Cragun For This Post:
# 16  
Old 10-16-2014
Hello guys,

Thanks for your valueble help. I did some investigation and tried all of your suggested solutions. So I finally solved my problem. Here is the solution that I used.

Code:
N='0'
ls *.[Tt][Xx][Tt] | while read line
do
cat $line > file$N
csplit -f $line file$N '/^SOH/' '{*}'
N=$((N+1))
done

Thanks again.
# 17  
Old 10-16-2014
Quote:
Originally Posted by sembii
Hello guys,

Thanks for your valueble help. I did some investigation and tried all of your suggested solutions. So I finally solved my problem. Here is the solution that I used.

Code:
N='0'
ls *.[Tt][Xx][Tt] | while read line
do
cat $line > file$N
csplit -f $line file$N '/^SOH/' '{*}'
N=$((N+1))
done

Thanks again.
The following should do exactly the same thing and user fewer system resources:
Code:
N='0'
for line in *.[Tt][Xx][Tt]
do
cat $line > file$N
csplit -f $line file$N '/^SOH/' '{*}'
N=$((N+1))
done

In cases where *.[Tt][Xx][Tt] expands to a long list of files, the for loop should still work correctly even though the ls command could fail due to ARG_MAX limitations.
# 18  
Old 10-20-2014
Hi Don Cragun,

Yes, your right. In this environment, all text files that we want to split are located in separate directory. And their names include date like 201410201653.INP, so I have changed list command to below.

Code:
cd /path/to/directory/
*
ls 20*.INP | while read line

Also output files of csplit named incorrectly. Example, 201410201653.INP01, ***02, **03 etc. So I'm going to rename them in script like 201410201653_01.INP

Also, I have added '-n 3' option to csplit command. Because csplit max output limit reached at 99 files.

Code:
csplit -f $line -n 3 file$N '/^SOH/' '{*}'

---------- Post updated at 05:16 PM ---------- Previous update was at 05:00 PM ----------
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Need to filter string between specific string in ksh

My argument has data as below. 10.9.9.85 -rwxr-xr-x user1 2019-10-15 17:40 /app/scripts/testingscr5.scr 127869538 -rwxr-xr-x user1 2019-10-15 17:40 /app/scripts/testingscr56scr 127869538 ....... (note all these between lines will start with hyphen '-' ) -rwxr-xr-x user1 2019-10-15 17:40... (3 Replies)
Discussion started by: mohtashims
3 Replies

2. UNIX for Beginners Questions & Answers

How to grep repeated string on the same line?

I have this a file.txt with one line, whose content is /app/jdk/java/bin/java -server -Xms3g -Xmx3g -XX:MaxPermSize=256m -Dweblogic.Name=O2pPod8_mapp_msrv1_1 -Djava.security.policy=/app/Oracle/Middleware/Oracle_Home/wlserver/server/lib/weblogic.policy -Djava.security.egd=file:/dev/./urandom... (3 Replies)
Discussion started by: Lam
3 Replies

3. UNIX for Dummies Questions & Answers

Reading between a repeated string

I have a requirement where I have to read the lines between a repeated string FileName: abc.txt ls /data/abc.txt 1 2 #ZENCO 3 4 5 6 #ZENCO 11 213 454 7 #ZENCO (8 Replies)
Discussion started by: eskay
8 Replies

4. Shell Programming and Scripting

To Search for a string and to extract the string from the text

Hi Team I have an huge xml where i need to search for a ceratin numbers. For example 2014-05-06 15:15:41,498 INFO WebContainer : 10 CommonServicesLogs - CleansingTriggerService.invokeCleansingService Entered PUBSUB NOTIFY MESSAGE () - <?xml version="1.0" encoding="UTF-8"... (5 Replies)
Discussion started by: Kannannair
5 Replies

5. Shell Programming and Scripting

Search String and extract few lines under the searched string

Need Assistance in shell programming... I have a huge file which has multiple stations and i wanted to search particular station and extract few lines from it and the rest is not needed Bold letters are the stations . The whole file has multiple stations . Below example i wanted to search... (4 Replies)
Discussion started by: ajayram_arya
4 Replies

6. Shell Programming and Scripting

Extract a specific string from a file

Hi, I have a file whose contents are as follows. 2013-03-08/15:09:20.134 INFO 00000000-00000000 0034 09700400 CON_IN SessionID:ED5E1400-4805-85E2-17B2-5BE45684886A Connection ID:ED5E1400-4805-68F1-BB1D-F06496BCF910 TO:<sip:51234999@10.239.94.146:5060 FROM:<sip:9302280716@97.208.31.7:51024... (2 Replies)
Discussion started by: SunilB2011
2 Replies

7. Shell Programming and Scripting

Extract a string between 2 ref string from a file

Hi, May i ask if someone share some command for extracting a string between 2 ref string in a txt file My objective: i had a file with multiple lines and wants only to extract the string "watch?v=IbkAXOmEHpY" or "watch?v=<11 random character>", when i used "grep 'watch?=*' i got a results per... (4 Replies)
Discussion started by: jao_madn
4 Replies

8. Shell Programming and Scripting

to extract string from main string and string comparison

continuing from my previous post, whose link is given below as a reference https://www.unix.com/shell-programming-scripting/171076-shell-scripting.html#post302573569 consider there is create table commands in a file for eg: CREATE TABLE `Blahblahblah` ( `id` int(11) NOT NULL... (2 Replies)
Discussion started by: vivek d r
2 Replies

9. Shell Programming and Scripting

extract specific string and rename file

Hi all, I am working on a small prog.. i have a file.txt which contains random data... K LINES V4 ADD CODE `COMPANY` ADD CODE `DISTRIBUTOR` SEQ NAME^K LINES V5 SEQ NAME^K LINES V6 ADD `PACK-LDATE` SEQ NAME^K^KCOMMAND END^KHEADINFO... (1 Reply)
Discussion started by: mukeshguliao
1 Replies

10. Shell Programming and Scripting

Search for string in a file and extract another string to a variable

Hi, guys. I have one question: I need to search for a string in a file, and then extract another string from the file and assign it to a variable. For example: the contents of the file (group) is below: ... ftp:x:23: mail:x:34 ... testing:x:2001 sales:x:2002 development:x:2003 ...... (6 Replies)
Discussion started by: daikeyang
6 Replies
Login or Register to Ask a Question