[BASH/SH] Regex/Rematching Problems


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting [BASH/SH] Regex/Rematching Problems
# 15  
Old 04-08-2011
guid=`tail -n 10 $log | sed '/ClientUserinfo/!d;s/.*cl_guid\\//;s/\\.*//'`
produces this error:
sed: 1: "/ClientUserinfo/!d;s/.* ...": bad flag in substitute command: '\'
and your last example never prints out ANYTHIN with tst =

Code:
199E
1BCC
0A9B
0AA1
15A5
15AD
0AA2
15A6
15AC

also
Code:
tail -n 10 $log | sed '/ClientUserinfo/!d;s/.*cl_guid\\//;s/\\.*//'
            echo $REPLY

prints out:
"66F1365D96239BB0C6BB7CE6A74C064B

"
(2nd line empy again) BUT WHY???
# 16  
Old 04-08-2011
Could you please copy paste the whole command you entered ? (as far as i have tested, for me it works)

Ooops, yes of course, i called my test file "tst" but you should replace "tst" by the name of your logfile !!!!
# 17  
Old 04-08-2011
Code:
s0lll0s:Desktop S0ll0s$ set -- `tail -9 tst | awk '{print$2}'`
s0lll0s:Desktop S0ll0s$ echo $*

s0lll0s:Desktop S0ll0s$ set -- `tail -9 tst | awk '{print$2}'`
s0lll0s:Desktop S0ll0s$ echo $*

s0lll0s:Desktop S0ll0s$ tail -9 tst | awk '{print$2}'

SOLVED:
Code:
guid=`tail -n 10 $log | sed '/ClientUserinfo/!d;s/.*cl_guid\\\//;s/\\\.*//'`
            echo $guid
had to triple the backslashes! THXctsgnb!! s0lll0s:Desktop S0ll0s$ tail -9 tst | awk '{print$2}' s0lll0s:Desktop S0ll0s$ tail -9 tst | awk '{print$2}' s0lll0s:Desktop S0ll0s$ tail -9 tst | awk '{print$2}'

while tst looks like:
Code:
199E
1BCC
0A9B
0AA1
15A5
15AD
0AA2
15A6
15AC

# 18  
Old 04-08-2011
or try this replacing the back quote with $( ) notation

Code:
set -- $(tail $log | sed '/ClientUserinfo/!d;s/.*cl_guid\\//;s/\\.*//')

---------- Post updated at 08:42 PM ---------- Previous update was at 08:39 PM ----------

Code:
# log=tst
# echo $*

# cat tst
1
2:35 ClientUserinfo: 0 \ip\localhost\name\test\racered\2\raceblue\2\rate\8000\ut_timenudge\0\cg_rgb\255 0 0\funred\gasmask,h_head\funblue\gasmask,h_head\cg_predictitems\0\cg_physics\1\gear\GZAARWA\cl_anonymous\0\sex\male\handicap\100\color2\5\color1\4\team_headmodel\*james\team_model\james\headmodel\sarge\model\sarge\snaps\20\teamtask\0\cl_guid\F6F1365D96239BB0C6BB7CE6A74C064B\weapmodes\00000110220000020002
2:35 ClientUserinfo: 0 \ip\localhost\name\test\racered\2\raceblue\2\rate\8000\ut_timenudge\0\cg_rgb\255 0 0\funred\gasmask,h_head\funblue\gasmask,h_head\cg_predictitems\0\cg_physics\1\gear\GZAARWA\cl_anonymous\0\sex\male\handicap\100\color2\5\color1\4\team_headmodel\*james\team_model\james\headmodel\sarge\model\sarge\snaps\20\teamtask\0\cl_guid\I6F1365D96239BB0C6BB7CE6A74C064B\weapmodes\00000110220000020002
2:35 ClientUserinfo: 0 \ip\localhost\name\test\racered\2\raceblue\2\rate\8000\ut_timenudge\0\cg_rgb\255 0 0\funred\gasmask,h_head\funblue\gasmask,h_head\cg_predictitems\0\cg_physics\1\gear\GZAARWA\cl_anonymous\0\sex\male\handicap\100\color2\5\color1\4\team_headmodel\*james\team_model\james\headmodel\sarge\model\sarge\snaps\20\teamtask\0\cl_guid\JRF1365D96239BB0C6BB7CE6A74C064B\weapmodes\00000110220000020002
5
6
7
2:35 ClientUserinfo: 0 \ip\localhost\name\test\racered\2\raceblue\2\rate\8000\ut_timenudge\0\cg_rgb\255 0 0\funred\gasmask,h_head\funblue\gasmask,h_head\cg_predictitems\0\cg_physics\1\gear\GZAARWA\cl_anonymous\0\sex\male\handicap\100\color2\5\color1\4\team_headmodel\*james\team_model\james\headmodel\sarge\model\sarge\snaps\20\teamtask\0\cl_guid\K6F1365D96239BB0C6BB7CE6A74C064B\weapmodes\00000110220000020002
9
10
# set -- $(tail $log | sed '/ClientUserinfo/!d;s/.*cl_guid\\//;s/\\.*//')
# echo $*
F6F1365D96239BB0C6BB7CE6A74C064B I6F1365D96239BB0C6BB7CE6A74C064B JRF1365D96239BB0C6BB7CE6A74C064B K6F1365D96239BB0C6BB7CE6A74C064B
#

---------- Post updated at 08:44 PM ---------- Previous update was at 08:42 PM ----------

NOTE: by default, tail only takes the 10 last line so you don't need to specify -n 10
# 19  
Old 04-08-2011
Quote:
Originally Posted by s0lll0s

@Kurumi i dont get how i should read the variable now. I tried adding "print $s" at the end but it returned the whole last 10 lines.
assign it to a variable
Code:
variable=$(tail -10 file  | ruby -e 'while s=gets;puts s.gsub(/.*cl_guid\\(.*?)\\.*/,"\\1") if /ClienUserinfo/;end')

this you should have already learned in basic unix scripting.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Regex negative look and bash script

My script have to read logfile, and take some action, if in pattern are strings: 1) exit 0 strings pattern ... "INF - Status"... success 2) exit 1 (! as not) strings pattern ... "INF - Status"... !success Simple example, what works #!/bin/bash tail -f regex.log | while read LOGLINE ... (7 Replies)
Discussion started by: kvaikla
7 Replies

2. Shell Programming and Scripting

Using RegEx with variable within bash if [[ ]]

I stumbled upon a problem, which I simplified to this: There is a list of numbers, stored in variable $LIST, lets use `seq 5 25` for demonstration. There is a number that should be compared against this list. For demonstration I use user input - read VALUE I am trying to compare RegEx... (2 Replies)
Discussion started by: Zorbeg
2 Replies

3. Shell Programming and Scripting

Bash regex evaluation not workin

I'm building a script that may received start and end date as parameters. I whant to make it as flexible as possible so I'm accepting epoch and date in a way that "date --date=" command may accept. In order to know if parameter provided is an epoc or a "date --date=" string I evaluate if the value... (2 Replies)
Discussion started by: lramirev
2 Replies

4. UNIX for Dummies Questions & Answers

Regex for (a|b) in bash

I am trying to find files using the following by using simple bash script: if -2014 ]]; then echo "yes";fi What I need to find are any files with date 08-**-2014 so August 2014 any files. I can use if -2014 ]]; then echo "yes";fi That works fine. How do I get files beginning with 08... (1 Reply)
Discussion started by: newbie2010
1 Replies

5. UNIX for Dummies Questions & Answers

Need help with Regex for bash

Hi, I am trying to match this word: hexagon-bx.mydomain.com with regex. I have tried this: "\.*]*$" So far I have not been successful. I also need to make sure that the regex will match words that just have lowercase letters and numbers in them, such as camera01. How can I create such an... (5 Replies)
Discussion started by: newbie2010
5 Replies

6. Shell Programming and Scripting

Hi im new to bash scripting I want to know what does the regex expression do ??

# check host value regex='^(||1|2|25)(\.(||1|2|25)){3}$' if ')" != "" ]; then if ]; then echo host $host not found exit 4 fi elif ]; then echo $host is an invalid host address exit 5 fi (1 Reply)
Discussion started by: kevin298
1 Replies

7. Shell Programming and Scripting

Bash regex help

I've been using the following regex below in a bash script on RHEL 5.5 using version GNU bash, version 3.2.25(1)-release I've tried using the script on RHEL 6.3 which uses GNU bash, version 4.1.2(1)-release I assume there's been alot of changes to bash since that's quite a jump in revisions.... (12 Replies)
Discussion started by: woodson2
12 Replies

8. Shell Programming and Scripting

[BASH] Allow name with spaces (regex)

Hey all, I have a very simple regular expression that I use when I want to allow only letters with spaces. (I know this regex has a lot of shortcomings, but I'm still trying to learn them) isAlpha='^*$'However, when I bring this over to BASH it doesn't allow me to enter spaces. I use the... (3 Replies)
Discussion started by: whyte_rhyno
3 Replies

9. Shell Programming and Scripting

Bash regex

Hello everybody, I'm clearly not an expert in bash scripting as I've written maybe less than 10 scripts in my life. I'm trying to strip an xml string removing every tag in it. I'm using bash substitution to do so, but apparently I missed something about what is a regex for bash ... As an... (4 Replies)
Discussion started by: kerloi
4 Replies

10. Shell Programming and Scripting

regex test in bash

Hi I want to do a regex test and branch based on the test result, but this doesn't seems to work :confused: if \) ]] then echo success else echo failed fi (1 Reply)
Discussion started by: subin_bala
1 Replies
Login or Register to Ask a Question