alex@goku:~$ cat elenco Q01569 Q04191 Q06157 alex@goku:~$ cat elenco | xargs Q01569 Q04191 Q06157
Personalmente trovo molto utile questo suggerimento quando devo eseguire una query passando una lista molto lunga di condizioni; il tipico esempio è:
select * from tabella where valore in ('var1','var2','var');
Quindi il comando da eseguire in shell bash per avere la lista separata da virgole e ogni valore fra singoli apici è il seguente:
alex@goku:~$ cat elenco | xargs -I {} echo -n ",\'{}\'" | xargs | cut -c 2- 'Q01569','Q04191','Q06157'
La query completa risulterà di questo tipo:
alex@goku:~$ echo "select * from tabella where valore in ($(cat elenco | xargs -I {} echo -n ",\'{}\'" | xargs | cut -c 2-));" select * from tabella where valore in ('Q01569','Q04191','Q06157');
Aggiornamento:
Posso togliere i caratteri di ESCAPE sui singoli apici all’interno di echo e rimuovere l’ultimo xargs (in questo modo evito anche l’errore “xargs: argument line too long“)
alex@goku:~$ cat elenco | xargs -I {} echo -n ",'{}'" | cut -c 2- 'Q01569','Q04191','Q06157'
[ad name=”HTML”]