![]() |
|
|
google unix.com
|
|||||||
| Forums | Register | Forum Rules | Links | Albums | FAQ | Members List | Calendar | Search | Today's Posts | Mark Forums Read |
| Shell Programming and Scripting Post questions about KSH, CSH, SH, BASH, PERL, PHP, SED, AWK and OTHER shell scripts and shell scripting languages here. |
More UNIX and Linux Forum Topics You Might Find Helpful
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| Asterisk on IPCop Asterisk 1.4.20 for IPCop 1.4.18 (Default branch) | iBot | Software Releases - RSS News | 0 | 05-21-2008 09:40 PM |
| Asterisk on IPCop Asterisk 1.4.19.2 for IPCop 1.4.18 (Default branch) | iBot | Software Releases - RSS News | 0 | 05-14-2008 08:20 AM |
| Asterisk on IPCop IPCop 1.4.18 with Asterisk 1.4.19.1 (Asterisk IPCop ISO branch) | iBot | Software Releases - RSS News | 0 | 04-26-2008 05:10 AM |
| Asterisk on IPCop Asterisk 1.4.19.1 for IPCop 1.4.18 (Default branch) | iBot | Software Releases - RSS News | 0 | 04-25-2008 05:10 PM |
| passing asterisk to a script as variable | GKnight | Shell Programming and Scripting | 9 | 04-02-2008 11:32 AM |
![]() |
|
|
LinkBack | Thread Tools | Search this Thread | Rate Thread | Display Modes |
|
|
|
||||
|
How to ignore * (asterisk) in a variable
I am using a shell script to read SQL statements stored in a DB2 table and write them out to a file. The problem I have is that some SQL statements have an "*" in them which gets resolved as the list of files in the current directory when I run the script. How can I prevent the "*" from being resolved??
Actual SQL: SELECT * FROM RTDS.TSPSTOPS Result SQL: SELECT gen.out gen.sql gen2.sql getsql.sh getsql2.sh sqlrow.out sqltxt.out test.sh FROM RTDS.TSPSTOPS Code Snippet: sqlrow=$(db2 +c -x fetch from c1 ) fetchrc=$? echo fetchrc = $rc echo ${sqlrow} |
|
||||
|
Quote:
|
|
||||
|
My apologies for my example not being very clear. The "Actual SQL" shown in my OP is the value that the fetch will return into the shell variable "sqlrow". Since the Actual SQL has an "*" in it, when I echo $sqlrow, the * gets resolved and substitutes in the list of files from the current directory.
So, duh, I was able to resolve that by putting double quotes around the variable on the echo like : echo "$sqlrow" Now, the plot thickens a bit. The sql is stored in a varchar(32000) on the source table. When I put the double quotes on the echo, I now get a record echo'd out that is 32000 bytes long. (The actual SQL statements will range from 50 - 10000 bytes). So, I don't want to write out all that extra space on the end of each record. I can get the length of the sql, and I'm now trying to substr it in awk as follows where $rowlen contains the length of the sql: sqltxt=`echo "$sqlrow"|awk '{print substr($0,1,$rl)}' rl=$rowlen` However, I'm now getting the message "awk: record ` SELECT * F...' too long" What is the best way for me to either suppress the extra spaces on the end of each record or to substr out the actual SQL?? |
|
|||||
|
tr -s " " will suppress extra " " space charcters Code:
> line2="This 2spaces 3spaces 4and5after *" > echo "$line2" This 2spaces 3spaces 4and5after * > echo "$line2" | tr -s " " This 2spaces 3spaces 4and5after * |
|
||||
|
thanks!!
joeyg,
thanks for the tip on the "tr" command. It is doing what I need it to do. just as an fyi, I was also able to mess around and get the "cut" command to work since I had the statement length available, but I think I'll stick with "tr" thanks, bp |
|
||||
|
Quote:
Code:
create table my_table
(sql_statement varchar(1000));
insert into my_table values ('select * from table2');
select sql_statement || '#' from my_table;
Here is my output: Code:
SQL_STATEMENT||'#' ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- select * from table2# 1 row selected. Have you tried trimming the output as you select it from the DB2 database? Code:
select trim(sql_statement) || '#' from my_table; The output is the same (i.e., no trailing spaces for the data), unless the long line of dashes is giving you a problem: Code:
TRIM(SQL_STATEMENT)||'#' ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- select * from table2# 1 row selected. |
![]() |
| Bookmarks |
| Tags |
| awk, awk trim, trim, trim awk |
| Thread Tools | Search this Thread |
| Display Modes | Rate This Thread |
|
|