![]() |
|
|
google unix.com
|
|||||||
| Forums | Registrer | Forum Regler | Links | Albums | FAQ | Members List | Kalender | Søgning | Dagens Stillinger | Mark Forums Read |
| Shell Programmering og Scripting Post spørgsmål om ksh, CSH, SH, Bash, Perl, PHP, SED, AWK og ANDRE shell scripts og Shell scriptsprog her. |
Mere UNIX og Linux Forum Emner du måske kan finde Helpful
|
||||
| Tråd | Thread Starter | Forum | Svar | Last Post |
| Asterisk om IPCop Asterisk 1.4.20 for IPCop 1.4.18 (Default filial) | iBot | Software Releases - RSS Nyheder | 0 | 05-21-2008 09:40 PM |
| Asterisk om IPCop Asterisk 1.4.19.2 for IPCop 1.4.18 (Default filial) | iBot | Software Releases - RSS Nyheder | 0 | 05-14-2008 08:20 AM |
| Asterisk om IPCop IPCop 1.4.18 med Asterisk 1.4.19.1 (Asterisk IPCop ISO filial) | iBot | Software Releases - RSS Nyheder | 0 | 04-26-2008 05:10 AM |
| Asterisk om IPCop Asterisk 1.4.19.1 for IPCop 1.4.18 (Default filial) | iBot | Software Releases - RSS Nyheder | 0 | 04-25-2008 05:10 PM |
| passerer asterisk til et script som variable | GKnight | Shell Programmering og Scripting | 9 | 04-02-2008 11:32 AM |
![]() |
|
|
LinkBack | Thread Tools | Søg denne tråd | Rate Thread | Display Modes |
|
|
|
||||
|
Sådan ignorere * (asterisk) i en variabel
Jeg bruger et shell script til at læse SQL opgørelser gemt på en DB2 bordet og skrive dem ud til en fil. Problemet jeg har er, at nogle SQL opgørelser har en "*" i dem, der bliver løst så listen over filer i det aktuelle bibliotek, når jeg kører scriptet. Hvordan kan jeg forhindre, at "*" fra at blive løst??
Faktiske SQL: SELECT * FRA RTDS.TSPSTOPS Resultat SQL: SELECT gen.out gen.sql gen2.sql getsql.sh getsql2.sh sqlrow.out sqltxt.out test.sh FRA RTDS.TSPSTOPS Kodestykket: sqlrow \u003d $ (DB2 + c-x hente fra c1) fetchrc \u003d $? echo fetchrc \u003d $ rc echo $ (sqlrow) |
|
||||
|
Citat:
|
|
||||
|
Min undskyldning for mit eksempel ikke er meget klar. "Den faktiske SQL" vises i mine OP'et er den værdi, som de henter vil vende tilbage til råtanken variable "sqlrow". Da den faktiske SQL har en "*" i den, når jeg echo $ sqlrow, det * bliver løst, og erstatninger på listen over filer fra det aktuelle bibliotek.
Så duh, jeg var i stand til at løse dette ved at sætte dobbelte anførselstegn omkring variablen på echo gerne: echo "$ sqlrow" Nu er plot thickens en smule. SQL er gemt på en varchar (32000) om kilden bordet. Da jeg satte dobbelte anførselstegn om echo, jeg nu får et rekordstort echo'd, at der er 32.000 bytes lange. (Den faktiske SQL opgørelser vil varierer fra 50 - 10000 bytes). Så jeg ønsker ikke at skrive alt det ekstra plads på slutningen af hver post. Jeg kan få længden af SQL, og jeg nu forsøger at substr det i awk som følger, hvor $ rowlen indeholder længden af sql: sqltxt \u003d `echo" $ sqlrow "| awk '(print substr ($ 0,1, $ rl))' rl \u003d $ rowlen« Men jeg er nu at få budskabet "awk: record« SELECT * F. .. ' for lang tid " Hvad er den bedste måde for mig at enten undertrykke ekstra mellemrum i slutningen af hver post eller substr de faktiske SQL?? |
|
|||||
|
tr-s "" vil undertrykke ekstra "" space charcters Code:
> line2="This 2spaces 3spaces 4and5after *" > echo "$line2" This 2spaces 3spaces 4and5after * > echo "$line2" | tr -s " " This 2spaces 3spaces 4and5after * |
|
||||
|
tak!
joeyg,
tak for tip om "tr" kommando. Det gør, hvad jeg har brug for det at gøre. lige som en FYI, jeg var også i stand til griseri omkring og få de "cut"-kommando til at arbejde, da jeg havde den erklæring længde til rådighed, men jeg tror, jeg vil holde med "tr" tak, bp |
|
||||
|
Citat:
Code:
create table my_table
(sql_statement varchar(1000));
insert into my_table values ('select * from table2');
select sql_statement || '#' from my_table;
Her er mit output: Code:
SQL_STATEMENT||'#' ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- select * from table2# 1 row selected. Har du forsøgt at trimme produktionen som du vælger den fra DB2 database? Code:
select trim(sql_statement) || '#' from my_table; Output er det samme (dvs. at der ikke efterfølgende mellemrum for data), medmindre den lange række af bindestreger er at give dig et problem: Code:
TRIM(SQL_STATEMENT)||'#' ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- select * from table2# 1 row selected. |
![]() |
| Bogmærker |
| Tags |
| awk, awk trim, trim, trim awk |
| Thread Tools | Søg denne tråd |
| Display Modes | Bedøm denne tråd |
|
|