Retreive string between two chars


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Retreive string between two chars
# 1  
Old 03-13-2007
Retreive string between two chars

I want to write a shell script in order to retreive some data from a log file that i have written into.

The string that i want to get is the number 2849 (that is located between | | ).

To explain further, this is the result i get after running "grep LOGIN filename.log" but i need to get the number (2849) that emphasises to me the thread number.

the log looks like this:
****
IMI|DEBUG|13.03.2007 11:47:28|2849|1073801408| : IMAP COMMAND RECV: [ABCD8 LOGIN 666664444412341:0:0\irit_aha\3

****

Any help will be appreciated!!

Daniel
# 2  
Old 03-13-2007
Code:
$ echo "IMI|DEBUG|13.03.2007 11:47:28|2849|1073801408| : IMAP COMMAND RECV: [ABCD8 LOGIN 666664444412341:0:0\irit_aha\3" | cut -d"|" -f4
2849

# 3  
Old 03-13-2007
Code:
awk -F"|" '{ print $4}' filename


in sed,

Code:
sed 's/\(.*\)|\(.*\)|\(.*\)|\(.*\)/\1/' filename

# 4  
Old 03-13-2007
You can do it all in awk:

Code:
awk '/LOGIN/{print $4}' FS=\| filename.log

# 5  
Old 03-13-2007
if you have python, here's an alternative:
Code:
python -c "import sys; print sys.stdin.readlines()[0].split('|')[3]" < file

output:
Code:
2849

# 6  
Old 03-13-2007
can i use the command "awk -F"|" '{ print $4}'" and the result to be returned to a variable such as this: (this command will be written in shell)

result= `awk -F"|" '{ print $4}'`
so when i run $result, i will get the desired number?

thx
daniel
# 7  
Old 03-13-2007
No space after '=' and '`'

You have to use it this way,

Code:
result=`awk -F"|" '{ print $4}' filename`

or

Code:
result=`echo <allthoseval> | awk -F"|" '{ print $4}'`

Code:
result=`echo $val | awk -F"|" '{ print $4}'`

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

sed - print only the chars that match a given set in a string

For a given string that may contain any ASCII chars, i.e. that matches .*, find and print only the chars that are in a given subset. The string could also have numbers, uppercase, special chars such as ~!@#$%^&*(){}\", whatever a user could type in without going esoteric For simplicity take... (1 Reply)
Discussion started by: naderra
1 Replies

2. Shell Programming and Scripting

Add an string at every x chars

Hi All, I have a file fo around 15k bytes which i need to insert a string " + "at every 250 bytes. I found some ideas here using perl to split into lines and tried to addapt it but the results where not satisfactory for instance i tried to change #!/usr/bin/perl $teststring =... (9 Replies)
Discussion started by: kadu
9 Replies

3. UNIX for Dummies Questions & Answers

How to search for a string with special chars?

Hi guys, I am trying to find the following string in a file, but I always get pattern not found error, not sure what is missing here. Can you help please? I do a less to open the xrates.log and then do a /'="18"' in the file and tried various combinations to search the below string. String... (8 Replies)
Discussion started by: santokal
8 Replies

4. Shell Programming and Scripting

XML - Split And Extract String between Chars

Hi, I am trying to read the records from file and split into multiple files. SourceFile.txt <?xml version="1.0" encoding="UTF-8"?>... (2 Replies)
Discussion started by: unme
2 Replies

5. Shell Programming and Scripting

Remove duplicate chars and sort string [SED]

Hi, INPUT: DCBADD OUTPUT: ABCD The SED script should alphabetically sort the chars in the string and remove the duplicate chars. (5 Replies)
Discussion started by: jds93
5 Replies

6. Shell Programming and Scripting

[Solved] print chars of a string

how can i print all the chars of a string one by line? i have thought that use a for cicle and use this command inside: ${VARIABLE:0:last}but how can i make last? because string is random P.S. VARIABLE is the string or can i make a variable for every chars of this string? this was my idea... (10 Replies)
Discussion started by: tafazzi87
10 Replies

7. UNIX for Dummies Questions & Answers

regexp: match string that contains list of chars

Hi, I'm curious about how to do a very simple thing with regular expressions that I'm unable to figure out. If I want to find out if a string contains 'a' AND 'b' AND 'c' it can be very easily done with grep: echo $STRING|grep a|grep b|grep c but, how would you do that in a single... (9 Replies)
Discussion started by: jimcanoa
9 Replies

8. Shell Programming and Scripting

Repeatable chars in a string

I have a string I keep appending too upto certain amount of chars. Is there some sort of way for me to check the string to see if I hit my limit of repeatable characters? For example, assume I allow for 2 repeatable chars, this will be a valid string Xxh03dhJUX, so I can append the last... (3 Replies)
Discussion started by: BeefStu
3 Replies

9. Shell Programming and Scripting

Matching 2 chars of a string that repeat

Hello Unix gurus, I have a gzipped file where each line contains 2 street addresses in the US. What I want to do is get a count for each state that does not match. What I have so far is: $ gzcat matched_10_09.txt.gz |cut -c 106-107,184-185 | head -5 CTCT CTNY CTCT CTFL CTMA This cuts... (5 Replies)
Discussion started by: sitney
5 Replies

10. UNIX for Dummies Questions & Answers

Extracting the last 3 chars from a string using sed

Hi. Can I extract the last 3 characters from a given string using sed ? Why the following doesn't work (it prints the full string) : echo "abcd" | sed '/\.\.\.$/p' doesn't work ? output: abcd Thanks in advance, 435 Gavea. (7 Replies)
Discussion started by: 435 Gavea
7 Replies
Login or Register to Ask a Question