![]() |
|
|
google unix.com
|
|||||||
| Forum | Registrati | Regole Forum | Collegamenti | Album | FAQ | Members List | Calendario | Ricerca | Today's Posts | Mark Forums Read |
| Shell scripting e di programmazione Pubblica domande su KSH, CSH, SH, Bash, Perl, PHP, sed, awk e da altri script di shell e linguaggi di scripting shell qui. |
Più di UNIX e Linux Forum Argomenti potreste trovare utili
|
||||
| Filo | Thread Starter | Forum | Risposte | Ultimo Post |
| Asterisk su IPCop Asterisk 1.4.20 per IPCop 1.4.18 (Default succursale) | iBot | Software Uscite - RSS News | 0 | 05-21-2008 09:40 PM |
| Asterisk su IPCop Asterisk 1.4.19.2 per IPCop 1.4.18 (Default succursale) | iBot | Software Uscite - RSS News | 0 | 05-14-2008 08:20 AM |
| Asterisk su IPCop IPCop 1.4.18 con Asterisk 1.4.19.1 (Asterisk IPCop ISO succursale) | iBot | Software Uscite - RSS News | 0 | 04-26-2008 05:10 AM |
| Asterisk su IPCop Asterisk 1.4.19.1 per IPCop 1.4.18 (Default succursale) | iBot | Software Uscite - RSS News | 0 | 04-25-2008 05:10 PM |
| passando ad un asterisco script come variabile | GKnight | Shell scripting e di programmazione | 9 | 04-02-2008 11:32 AM |
![]() |
|
|
LinkBack | Thread Tools | Cerca in questo Thread | Rate Thread | Modalità di visualizzazione |
|
|
|
||||
|
Come ignorare * (asterisco) in una variabile
Sto usando uno script di shell per leggere le dichiarazioni di SQL memorizzati in una tabella DB2 e scrivere fuori a un file. Il problema è che ho alcune dichiarazioni SQL hanno un "*" che in essi viene risolto in quanto l'elenco dei file contenuti nella directory corrente quando ho eseguito lo script. Come faccio a impedire il "*" da una soluzione?
Actual SQL: SELECT * FROM RTDS.TSPSTOPS Risultato SQL: SELECT gen.out gen.sql gen2.sql getsql.sh getsql2.sh sqlrow.out sqltxt.out test.sh DA RTDS.TSPSTOPS Frammento di codice: sqlrow \u003d $ (db2 + c-x scaricare da c1) fetchrc \u003d $? echo fetchrc \u003d $ rc echo $ () sqlrow |
|
||||
|
Citazione:
|
|
||||
|
Mi scuso per il mio esempio non è molto chiaro. La "Reale SQL" mostrato nella mia OP è il valore che il fetch ritorna nella variabile di shell "sqlrow". Poiché l'attuale SQL ha un "*" in essa, quando ho echo $ sqlrow, l'* viene risolto e sostituti nella lista dei file dalla directory corrente.
Quindi, duh, sono stato in grado di risolvere tale da mettere tra virgolette doppie la variabile su come l'eco: echo "$ sqlrow" Ora, la trama un po 'densa. SQL è memorizzato in un varchar (32000) sulla tabella di origine. Quando ho messo le virgolette sulla eco, ora ottenere un record echo'd che è lungo 32000 bytes. (L'attuale SQL va da 50 - 10.000 byte). Quindi, non voglio scrivere tutto quello che di spazio alla fine di ciascun record. Sono in grado di ottenere la lunghezza del sql, e ora sto cercando di substr in awk come segue dove $ rowlen contiene la lunghezza del sql: sqltxt \u003d `echo" $ sqlrow "| awk '(print substr ($ 0,1, $ rl))' rl \u003d $ rowlen» Tuttavia, ora sto ottenendo il messaggio "awk: record» SELECT * F. .. ' troppo a lungo " Qual è il modo migliore per me sia per reprimere gli spazi alla fine di ciascun record o per l'effettiva substr SQL? |
|
|||||
|
tr-s "" eliminerà extra "" spazio charcters Codice:
> line2="This 2spaces 3spaces 4and5after *" > echo "$line2" This 2spaces 3spaces 4and5after * > echo "$line2" | tr -s " " This 2spaces 3spaces 4and5after * |
|
||||
|
grazie!
joeyg,
grazie per il suggerimento in merito alla "tr" comando. Si tratta di fare ciò che ho bisogno di fare. proprio come uno fyi, sono stato anche in grado di disordine e di ottenere circa il "taglio" per il lavoro da quando ho avuto la dichiarazione lunghezza disponibile, ma credo I'll stick con "tr" grazie, pb |
|
||||
|
Citazione:
Codice:
create table my_table
(sql_statement varchar(1000));
insert into my_table values ('select * from table2');
select sql_statement || '#' from my_table;
Qui è la mia uscita: Codice:
SQL_STATEMENT||'#' ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- select * from table2# 1 row selected. Hai provato a taglio della produzione, come si seleziona dal database DB2? Codice:
select trim(sql_statement) || '#' from my_table; Il risultato è lo stesso (cioè, non di spazi per i dati), a meno che la lunga serie di trattini si sta dando un problema: Codice:
TRIM(SQL_STATEMENT)||'#' ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- select * from table2# 1 row selected. |
![]() |
| Segnalibri |
| Tag |
| awk, awk trim, trim, trim awk |
| Thread Tools | Cerca in questo Thread |
| Modalità di visualizzazione | Vota questo thread |
|
|