我有一个带有ID列表的文本文件,如下所示:
123
456个
789
我想在查询中使用它们来查找有关这些项目的更多信息。到目前为止,我没有成功尝试过:
awk '{print $1;}' 'pathto/file.txt' | xargs echo "SELECT * FROM table WHERE id='{}');" | mysql -u uname -p database
答案 0 :(得分:2)
IDS=$(cat /path/to/file)
IDS=$(echo $IDS | sed 's/\s\s*/,/g')
#or IDS=$(echo $IDS | awk '{$1=$1}1' RS= OFS=,) on OSX
echo "SELECT * FROM table WHERE id in ($IDS)" | mysql -u uname -p database
第1行将id加载到变量中,这允许在第2行中轻松替换换行符,然后用逗号替换空格以使用IN ()
构造。
编辑1和2查看评论
编辑3
OSX上的(我不使用或无权访问)似乎sed
不喜欢我的正则表达式。正如OP指出的那样,使用IDS=$(echo $IDS | awk '{$1=$1}1' RS= OFS=,)
作为第2行可以解决这个问题。