Sponsored Content
Full Discussion: Regular expression
Top Forums Shell Programming and Scripting Regular expression Post 302903856 by durden_tyler on Friday 30th of May 2014 05:48:43 AM
Old 05-30-2014
Quote:
Originally Posted by cstsang
I need to extract whatever that comes after "(PROGRAM=" and before ")".In fact, this is Oracle listener log, there are some many "(XXX=YYY)", you are appreciated if you can build a function, it can return YYY when I input XXX.
Here's something to get you started:

Code:
$
$ cat listener.log
Line 1 - blah
Line 2 - blah, blah
20-FEB-2002 14:46:54 * (CONNECT_DATA=(SERVICE_NAME=OZZIEDB001.OZZIEWORKS.COM)(CID=(PROGRAM=C:\WINNT\System32\dllhost.exe)(HOST=OZZIELIVE02)(USER=Administrator))) * (ADDRESS=(PROTOCOL=tcp)(HOST=XX.YYY.16.73)(PORT=21 32)) * establish * OZZIEDB001.OZZIEWORKS.COM * 0
Line 4 - some more stuff
Line 5 - final line here...
$
$
$ cat -n grep_listener.py
     1  #!/usr/bin/python
     2  import sys
     3  import re
     4
     5  # ===============================================
     6  # Subroutine section
     7  # ===============================================
     8  def find_value (ptrn, str):                       # function takes in the regex pattern and the string
     9      val = ""                                      # set the default return value
    10      if re.search(ptrn, str) != None:              # if pattern was found in the string
    11          val = re.sub(ptrn, r'\1', str)            # then substitute it by the placeholder and set that as return value
    12      return val                                    # return the value
    13
    14  # ===============================================
    15  # Main section
    16  # ===============================================
    17  file_name = sys.argv[1]                           # 1st argument = file name
    18  search_for = sys.argv[2]                          # 2nd argument = word to search for
    19  pattern = "^.*?\(" + search_for + "=(.*?)\).*$"   # set up the regex pattern
    20  f = open (file_name, 'r')                         # open the file
    21  for line in f:                                    # iterate through each line
    22      value = find_value(pattern, line)             # call function to return param value for this line
    23      if value != "":                               # if value was found
    24          print value,                              # then print it
    25
$
$ python grep_listener.py listener.log SERVICE_NAME
OZZIEDB001.OZZIEWORKS.COM
$
$ python grep_listener.py listener.log PROGRAM
C:\WINNT\System32\dllhost.exe
$
$ python grep_listener.py listener.log BLAH
$
$

 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Regular Expression + Aritmetical Expression

Is it possible to combine a regular expression with a aritmetical expression? For example, taking a 8-numbers caracter sequece and casting each output of a grep, comparing to a constant. THX! (2 Replies)
Discussion started by: Z0mby
2 Replies

2. Programming

What does the regular expression ['(^[^~]+~).*'] mean?

What does the regular expression +~).*'] mean while using it with regexec.When the string "RCHNUSNT35C~rs07/ASM-RS07" is used with the regular expression +~).*'] regexec gives an error. I know what regexec does,but i do not understand what this expression means wrt to this string... any help... (2 Replies)
Discussion started by: anupamar
2 Replies

3. Linux

Regular expression to extract "y" from "abc/x.y.z" .... i need regular expression

Regular expression to extract "y" from "abc/x.y.z" (2 Replies)
Discussion started by: rag84dec
2 Replies

4. UNIX for Dummies Questions & Answers

ls with regular expression

I currently list and sort all the files in a directory which begin with an Upper Case C and end with the extension '#finished#'. Here is the command I use: ls -tr $currentDir/*.#finished# what i need to do now is list all the files in a directory that begin with upper case C and end... (3 Replies)
Discussion started by: rkgudde
3 Replies

5. Shell Programming and Scripting

Integer expression expected: with regular expression

CA_RELEASE has a value of 6. I need to check if that this is a numeric value. if not error. source $CA_VERSION_DATA if * ] then echo "CA_RELESE $CA_RELEASE is invalid" exit -1 fi + source /etc/ncgl/ca_version_data ++ CA_PRODUCT_ID=samxts ++ CA_RELEASE=6 ++ CA_WEEK_NO=7 ++... (3 Replies)
Discussion started by: ketkee1985
3 Replies

6. Programming

Perl: How to read from a file, do regular expression and then replace the found regular expression

Hi all, How am I read a file, find the match regular expression and overwrite to the same files. open DESTINATION_FILE, "<tmptravl.dat" or die "tmptravl.dat"; open NEW_DESTINATION_FILE, ">new_tmptravl.dat" or die "new_tmptravl.dat"; while (<DESTINATION_FILE>) { # print... (1 Reply)
Discussion started by: jessy83
1 Replies

7. UNIX for Dummies Questions & Answers

regular expression help

\..\ {3\}$ which one of these does this match rs.ef$tt abc.ab abc.$$$$ abc I think its the 1st one what do you think? Thanks Please use code tags! (2 Replies)
Discussion started by: drew211
2 Replies

8. UNIX for Advanced & Expert Users

sed: -e expression #1, char 0: no previous regular expression

Hello All, I'm trying to extract the lines between two consecutive elements of an array from a file. My array looks like: problem_arr=(PRS111 PRS213 PRS234) j=0 while } ] do k=`expr $j + 1` sed -n "/${problem_arr}/,/${problem_arr}/p" problemid.txt ---some operation goes... (11 Replies)
Discussion started by: InduInduIndu
11 Replies

9. UNIX for Dummies Questions & Answers

Regular expression help

Hi, I am quite knew to scripting and I am trying to get a regular expression to work to check that a user enters a valid version number such as 1 or 1.1 or 12.3 etc. I dont seem to be able to get it to work as it picks up versions such as 1.......2. I only want it to work with a single dot.... (12 Replies)
Discussion started by: frodo61
12 Replies

10. Shell Programming and Scripting

Regular expression

Can someone please explain me what does this mean? ^{1,50}$ (1 Reply)
Discussion started by: Anupam_Halder
1 Replies
PKEXEC(1)							      pkexec								 PKEXEC(1)

NAME
pkexec - Execute a command as another user SYNOPSIS
pkexec [--version] [--disable-internal-agent] [--help] pkexec [--user username] PROGRAM [ARGUMENTS...] DESCRIPTION
pkexec allows an authorized user to execute PROGRAM as another user. If username is not specified, then the program will be executed as the administrative super user, root. RETURN VALUE
Upon successful completion, the return value is the return value of PROGRAM. If the calling process is not authorized or an authorization could not be obtained through authentication or an error occured, pkexec exits with a return value of 127. If the authorization could not be obtained because the user dismissed the authentication dialog, pkexec exits with a return value of 126. AUTHENTICATION AGENT
pkexec, like any other polkit application, will use the authentication agent registered for the calling process or session. However, if no authentication agent is available, then pkexec will register its own textual authentication agent. This behavior can be turned off by passing the --disable-internal-agent option. SECURITY NOTES
Executing a program as another user is a privileged operation. By default the action to check for (see the section called "ACTION AND AUTHORIZATIONS") requires administrator authentication. In addition, the authentication dialog presented to the user will display the full path to the program to be executed so the user is aware of what will happen. The environment that PROGRAM will run it, will be set to a minimal known and safe environment in order to avoid injecting code through LD_LIBRARY_PATH or similar mechanisms. In addition the PKEXEC_UID environment variable is set to the user id of the process invoking pkexec. As a result, pkexec will not by default allow you to run X11 applications as another user since the $DISPLAY and $XAUTHORITY environment variables are not set. These two variables will be retained if the org.freedesktop.policykit.exec.allow_gui annotation on an action is set to a nonempty value; this is discouraged, though, and should only be used for legacy programs. Note that pkexec does no validation of the ARGUMENTS passed to PROGRAM. In the normal case (where administrator authentication is required every time pkexec is used), this is not a problem since if the user is an administrator he might as well just run pkexec bash to get root. However, if an action is used for which the user can retain authorization (or if the user is implicitly authorized) this could be a security hole. Therefore, as a rule of thumb, programs for which the default required authorization is changed, should never implicitly trust user input (e.g. like any other well-written suid program). ACTION AND AUTHORIZATIONS
By default, the org.freedesktop.policykit.exec action is used. To use another action, use the org.freedesktop.policykit.exec.path annotation on an action with the value set to the full path of the program. In addition to specifying the program, the authentication message, description, icon and defaults can be specified. If the org.freedesktop.policykit.exec.argv1 annotation is present, the action will only be picked if the first argument to the program matches the value of the annotation. Note that authentication messages may reference variables (see the section called "VARIABLES"), for example $(user) will be expanded to the value of the user variable. WRAPPER USAGE
To avoid modifying existing software to prefix their command-line invocations with pkexec, it's possible to use pkexec in a she-bang wrapper[1] like this: #!/usr/bin/pkexec /usr/bin/python import os import sys print "Hello, I'm running as uid %d"%(os.getuid()) for n in range(len(sys.argv)): print "arg[%d]=`%s'"%(n, sys.argv[n]) If this script is installed into /usr/bin/my-pk-test, then the following annotations [...] <annotate key="org.freedesktop.policykit.exec.path">/usr/bin/python</annotate> <annotate key="org.freedesktop.policykit.exec.argv1">/usr/bin/my-pk-test</annotate> [...] can be used to select the appropriate polkit action. Be careful to get the latter annotation right, otherwise it will match any pkexec invocation of /usr/bin/python scripts. VARIABLES
The following variables are set by pkexec. They can be used in authorization rules and messages shown in authentication dialogs: program Fully qualified path to the program to be executed. Example: "/bin/cat" command_line The requested command-line (do not use this for any security checks, it is not secure). Example: "cat /srv/xyz/foobar" user The user name of the user to execute the program as. Example: "davidz" user.gecos The full name of the user to execute the program as. Example: "David Zeuthen" user.display A representation of the user to execute the program as that is suitable for display in an authentication dialog. Is typically set to a combination of the user name and the full name. Example: "David Zeuthen (davidz)" AUTHOR
Written by David Zeuthen <davidz@redhat.com> with a lot of help from many others. BUGS
Please send bug reports to either the distribution or the polkit-devel mailing list, see the link http://lists.freedesktop.org/mailman/listinfo/polkit-devel on how to subscribe. SEE ALSO
polkit(8), polkitd(8), pkaction(1), pkcheck(1), pkttyagent(1) NOTES
1. she-bang wrapper http://en.wikipedia.org/wiki/Shebang_(Unix) polkit May 2009 PKEXEC(1)
All times are GMT -4. The time now is 09:33 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy