Sponsored Content
Top Forums UNIX for Beginners Questions & Answers String has * as the field delimiter and I need echo/awk to escape it, how? Post 302989042 by newbie_01 on Friday 6th of January 2017 12:15:29 PM
Old 01-06-2017
Hi RudiC

Thanks a lot, I'll worry about the wrapping thing later on. I may not need it if I am deconstructing the connectstring further

I'll post the updated script after I've broken down the connectstring information/variable. I will be using cut this time, I'll post it in case there is a better approach to it.

Currently, script now look as below. Not sure if there is a better way to get around the case/esac thingy.


Code:
$ ./z2.ksh
- timestamp = 15-DEC-2016 10:19:24  // 2016-12-15 10:19:24
- connectstring =  (CONNECT_DATA=(CID=(PROGRAM=JDBC Thin Client)(HOST=__jdbc__)(USER=testuser))(SERVER=DEDICATED)(SERVICE_NAME=test_app.x.y.z))
- host =  (ADDRESS=(PROTOCOL=tcp)(HOST=60.11.22.123)(PORT=55440))
- result =  establish
- service =  test_app.x.y.z
- returncode =  12666
-------------------------------------------------------------

$ cat z2.ksh
#!/bin/ksh

#15-DEC-2016 10:19:24 * (CONNECT_DATA=(CID=(PROGRAM=JDBC Thin Client)(HOST=__jdbc__)(USER=testuser))(SERVER=DEDICATED)(SERVICE_NAME=test_app.x.y.z)) * (ADDRESS=(PROTOCOL=tcp)(HOST=60.11.22.123)(PORT=55440)) * establish * test_app.x.y.z * 12666

#LOG=y.out
LOG=x.out

while IFS="*" read TS CS HOST RESULT SERVICE RETURNCODE
do
   timestamp=`echo $TS | awk '{ print $2 }'`
   year=`echo $TS | awk '{ print $1 }' | awk -F"-" '{ print $3 }'`
   day=`echo $TS | awk '{ print $1 }' | awk -F"-" '{ print $1 }'`
   month=`echo $TS | awk '{ print $1 }' | awk -F"-" '{ print $2 }'`

   case $month in
      "JAN" ) mm="01" ;;
      "FEB" ) mm="02" ;;
      "MAR" ) mm="03" ;;
      "APR" ) mm="04" ;;
      "MAY" ) mm="05" ;;
      "JUN" ) mm="06" ;;
      "JUL" ) mm="07" ;;
      "AUG" ) mm="08" ;;
      "SEP" ) mm="09" ;;
      "OCT" ) mm="10" ;;
      "NOV" ) mm="11" ;;
      "DEC" ) mm="12" ;;
   esac
   TS2="$year-$mm-$day $timestamp"

   echo "- timestamp = $TS // $TS2"
   echo "- connectstring = $CS"
   echo "- host = $HOST"
   echo "- result = $RESULT"
   echo "- service = $SERVICE"
   echo "- returncode = $RETURNCODE"
   echo "-------------------------------------------------------------"
   echo
done <  $LOG

###########
# THE END #
###########

$

 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Set a variable field delimiter using awk

How can i set a variable field delimiter using awk?? I wanna do something like this ,but i canīt get the correct syntaxis : VARI=TEST echo "0121212TESTxvcshaashd"|awk 'FS="$VARI" {print $2}' Thanks. (2 Replies)
Discussion started by: Klashxx
2 Replies

2. UNIX for Advanced & Expert Users

Printing Field with Delimiter in AWK/cut

Hello, I had posted earlier about printing fields using AWK, but now I have a slightly different problem. I have text files in the format: 1*2,3,4,5 and wish to print the first, third, and fifth fields, including the asterisk and commas. In other words, after filtering it should look... (1 Reply)
Discussion started by: Jahn
1 Replies

3. Shell Programming and Scripting

need to convert a decimal value to an ascii char with awk for the field delimiter

Hello, I need an awk script to receive a variable that's an decimal value such as 009 or 031 and then convert this value to an ascii character to use as the FS (field separator for the input file). For example, 009 should be converted to an ascii tab 031 should be converted to an ascii... (1 Reply)
Discussion started by: script_op2a
1 Replies

4. Shell Programming and Scripting

awk output field delimiter

Dear All, 1.txt (tab in between each value in a line) a b c a b c a c d you can see below, why with ~ i can output with tab, but = cannot? # awk -F'\t' '$2 ~ /b/' 1 a b c a b c # awk -F'\t' '$2 = "b"' 1 a b c a b c a b d ... (1 Reply)
Discussion started by: jimmy_y
1 Replies

5. Shell Programming and Scripting

how to find the nth field value in delimiter file in unix using awk

Hi All, I wanted to find 200th field value in delimiter file using awk.? awk '{print $200}' inputfile I am getting error message :- awk: The field 200 must be in the range 0 to 199. The source line number is 1. The error context is {print >>> $200 <<< } using... (4 Replies)
Discussion started by: Jairaj
4 Replies

6. Shell Programming and Scripting

Awk Search text string in field, not all in field.

Hello, I am using awk to match text in a tab separated field and am able to do so when matching the exact word. My problem is that I would like to match any sequence of text in the tab-separated field without having to match it all. Any help will be appreciated. Please see the code below. awk... (3 Replies)
Discussion started by: rocket_dog
3 Replies

7. Shell Programming and Scripting

perform echo and awk inside a string

hi, just wanted to make a shortcut of this one a="a b c" b=`echo $a | awk '{print $2}'` echo "the middle is $b" why can't i do this: a="a b c" echo "the middle is ${`echo $a | awk '{print $2}'`}" <- bad substitution :wall: thanks (6 Replies)
Discussion started by: h0ujun
6 Replies

8. Shell Programming and Scripting

awk :how to change delimiter without giving all field name

Hi Experts, i need to change delimiter from tab to "," sample test file cat test A0000368 A29938511 072569352 5 Any 2 for Ģ1.00 BUTCHERS|CAT FOOD|400G Sep 12 2012 12:00AM Jan 5 2014 11:59PM Sep 7 2012 12:00AM M 2.000 group 5 ... (2 Replies)
Discussion started by: Lakshman_Gupta
2 Replies

9. Shell Programming and Scripting

How can awk ignore the field delimiter like comma inside a field?

We have a csv file as mentioned below and the requirement is to change the date format in file as mentioned below. Current file (file.csv) ---------------------- empname,date_of_join,dept,date_of_resignation ram,08/09/2015,sales,21/06/2016 "akash,sahu",08/10/2015,IT,21/07/2016 ... (6 Replies)
Discussion started by: gopal.biswal
6 Replies

10. UNIX for Beginners Questions & Answers

awk Associative Array and/or Referring to Field by String (Nonconstant String Value)

I will start with an example of what I'm trying to do and then describe how I am approaching the issue. File PS028,005 Lexeme HRS # M # PhraseType 1(1:1) 7(7) PhraseLab 501 503 ClauseType ZYq0 PS028,005 Lexeme W # L> # BNH # M #... (17 Replies)
Discussion started by: jvoot
17 Replies
OCI_CONNECT(3)															    OCI_CONNECT(3)

oci_connect - Connect to an Oracle database

SYNOPSIS
resource oci_connect (string $username, string $password, [string $connection_string], [string $character_set], [int $session_mode]) DESCRIPTION
Returns a connection identifier needed for most other OCI8 operations. See Connection Handling for general information on connection management and connection pooling. From PHP 5.1.2 (PECL OCI8 1.1) oci_close(3) can be used to close the connection. The second and subsequent calls to oci_connect(3) with the same parameters will return the connection handle returned from the first call. This means that transactions in one handle are also in the other handles, because they use the same underlying database connection. If two handles need to be transactionally isolated from each other, use oci_new_connect(3) instead. PARAMETERS
o $username - The Oracle user name. o $password - The password for $username. o $connection_string -Contains the Oracle instance to connect to. It can be an Easy Connect string, or a Connect Name from the tnsnames.ora file, or the name of a local Oracle instance. If not specified, PHP uses environment variables such as TWO_TASK (on Linux) or LOCAL (on Windows) and ORACLE_SID to determine the Oracle instance to connect to. To use the Easy Connect naming method, PHP must be linked with Oracle 10 g or greater Client libraries. The Easy Connect string for Oracle 10 g is of the form: [//]host_name[:port][/ser- vice_name]. From Oracle 11 g, the syntax is: [//]host_name[:port][/service_name][:server_type][/instance_name]. Service names can be found by running the Oracle utility lsnrctl status on the database server machine. The tnsnames.ora file can be in the Oracle Net search path, which includes $ORACLE_HOME/network/admin and /etc. Alternatively set TNS_ADMIN so that $TNS_ADMIN/tnsnames.ora is read. Make sure the web daemon has read access to the file. o $character_set -Determines the character set used by the Oracle Client libraries. The character set does not need to match the character set used by the database. If it doesn't match, Oracle will do its best to convert data to and from the database character set. Depending on the character sets this may not give usable results. Conversion also adds some time overhead. If not specified, the Oracle Client libraries determine a character set from the NLS_LANG environment variable. Passing this parameter can reduce the time taken to connect. o $session_mode -This parameter is available since version PHP 5 (PECL OCI8 1.1) and accepts the following values: OCI_DEFAULT, OCI_SYSOPER and OCI_SYSDBA. If either OCI_SYSOPER or OCI_SYSDBA were specified, this function will try to establish privileged connection using external credentials. Privileged connections are disabled by default. To enable them you need to set oci8.privileged_connect to On. PHP 5.3 (PECL OCI8 1.3.4) introduced the OCI_CRED_EXT mode value. This tells Oracle to use External or OS authentication, which must be configured in the database. The OCI_CRED_EXT flag can only be used with username of "/" and a empty password. oci8.privileged_connect may be On or Off. OCI_CRED_EXT may be combined with the OCI_SYSOPER or OCI_SYSDBA modes. OCI_CRED_EXT is not supported on Windows for security reasons. RETURN VALUES
Returns a connection identifier or FALSE on error. EXAMPLES
Example #1 Basic oci_connect(3) using Easy Connect syntax <?php // Connects to the XE service (i.e. database) on the "localhost" machine $conn = oci_connect('hr', 'welcome', 'localhost/XE'); if (!$conn) { $e = oci_error(); trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR); } $stid = oci_parse($conn, 'SELECT * FROM employees'); oci_execute($stid); echo "<table border='1'> "; while ($row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS)) { echo "<tr> "; foreach ($row as $item) { echo " <td>" . ($item !== null ? htmlentities($item, ENT_QUOTES) : "&nbsp;") . "</td> "; } echo "</tr> "; } echo "</table> "; ?> Example #2 Basic oci_connect(3) using a Network Connect name <?php // Connects to the MYDB database described in tnsnames.ora file, // One example tnsnames.ora entry for MYDB could be: // MYDB = // (DESCRIPTION = // (ADDRESS = (PROTOCOL = TCP)(HOST = mymachine.oracle.com)(PORT = 1521)) // (CONNECT_DATA = // (SERVER = DEDICATED) // (SERVICE_NAME = XE) // ) // ) $conn = oci_connect('hr', 'welcome', 'MYDB'); if (!$conn) { $e = oci_error(); trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR); } $stid = oci_parse($conn, 'SELECT * FROM employees'); oci_execute($stid); echo "<table border='1'> "; while ($row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS)) { echo "<tr> "; foreach ($row as $item) { echo " <td>" . ($item !== null ? htmlentities($item, ENT_QUOTES) : "&nbsp;") . "</td> "; } echo "</tr> "; } echo "</table> "; ?> Example #3 oci_connect(3) with an explicit character set <?php $conn = oci_connect('hr', 'welcome', 'localhost/XE', 'AL32UTF8'); if (!$conn) { $e = oci_error(); trigger_error(htmlentities($e['message'], ENT_QUOTES), E_USER_ERROR); } $stid = oci_parse($conn, 'SELECT * FROM employees'); oci_execute($stid); echo "<table border='1'> "; while ($row = oci_fetch_array($stid, OCI_ASSOC+OCI_RETURN_NULLS)) { echo "<tr> "; foreach ($row as $item) { echo " <td>" . ($item !== null ? htmlentities($item, ENT_QUOTES) : "&nbsp;") . "</td> "; } echo "</tr> "; } echo "</table> "; ?> Example #4 Using multiple calls to oci_connect(3) <?php $c1 = oci_connect("hr", "welcome", 'localhost/XE'); $c2 = oci_connect("hr", "welcome", 'localhost/XE'); // Both $c1 and $c2 show the same PHP resource id meaning they use the // same underlying database connection echo "c1 is $c1<br> "; echo "c2 is $c2<br> "; function create_table($conn) { $stmt = oci_parse($conn, "create table hallo (test varchar2(64))"); oci_execute($stmt); echo "Created table<br> "; } function drop_table($conn) { $stmt = oci_parse($conn, "drop table hallo"); oci_execute($stmt); echo "Dropped table<br> "; } function insert_data($connname, $conn) { $stmt = oci_parse($conn, "insert into hallo values(to_char(sysdate,'DD-MON-YY HH24:MI:SS'))"); oci_execute($stmt, OCI_DEFAULT); echo "$connname inserted row without committing<br> "; } function rollback($connname, $conn) { oci_rollback($conn); echo "$connname rollback<br> "; } function select_data($connname, $conn) { $stmt = oci_parse($conn, "select * from hallo"); oci_execute($stmt, OCI_DEFAULT); echo "$connname ----selecting<br> "; while (oci_fetch($stmt)) { echo " " . oci_result($stmt, "TEST") . "<br> "; } echo "$connname ----done<br> "; } create_table($c1); insert_data('c1', $c1); // Insert a row using c1 sleep(2); // sleep to show a different timestamp for the 2nd row insert_data('c2', $c2); // Insert a row using c2 select_data('c1', $c1); // Results of both inserts are returned select_data('c2', $c2); // Results of both inserts are returned rollback('c1', $c1); // Rollback using c1 select_data('c1', $c1); // Both inserts have been rolled back select_data('c2', $c2); drop_table($c1); // Closing one of the connections makes the PHP variable unusable, but // the other could be used oci_close($c1); echo "c1 is $c1<br> "; echo "c2 is $c2<br> "; // Output is: // c1 is Resource id #5 // c2 is Resource id #5 // Created table // c1 inserted row without committing // c2 inserted row without committing // c1 ----selecting // 09-DEC-09 12:14:43 // 09-DEC-09 12:14:45 // c1 ----done // c2 ----selecting // 09-DEC-09 12:14:43 // 09-DEC-09 12:14:45 // c2 ----done // c1 rollback // c1 ----selecting // c1 ----done // c2 ----selecting // c2 ----done // Dropped table // c1 is // c2 is Resource id #5 ?> NOTES
Note An incorrectly installed or configured OCI8 extension will often manifest itself as a connection problem or error. See Installing/Configuring for troubleshooting information. SEE ALSO
oci_pconnect(3), oci_new_connect(3), oci_close(3). PHP Documentation Group OCI_CONNECT(3)
All times are GMT -4. The time now is 12:18 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy