Unix:使用CLI格式化数据
我想要的是一种将一个程序的输出通过管道传输到另一个程序中的方法,该程序将把每一行格式化为一个MySQL插入。Unix是否提供了一种简单的方法来实现这一点?您应该在bash中查看printf命令Unix:使用CLI格式化数据,unix,pipe,command-line-interface,Unix,Pipe,Command Line Interface,我想要的是一种将一个程序的输出通过管道传输到另一个程序中的方法,该程序将把每一行格式化为一个MySQL插入。Unix是否提供了一种简单的方法来实现这一点?您应该在bash中查看printf命令 您应该在bash中查看printf命令 我发现这正是我所需要的 echo "something from file" | awk '{print "something left " $0 " something right" }' 我发现这正是我所需要的 echo "something from fil
您应该在bash中查看printf命令
我发现这正是我所需要的
echo "something from file" | awk '{print "something left " $0 " something right" }'
我发现这正是我所需要的
echo "something from file" | awk '{print "something left " $0 " something right" }'
你可以这样做:
echo "something" | while read line; do
echo "INSERT INTO table VALUES($line);"
done > file
你可以这样做:
echo "something" | while read line; do
echo "INSERT INTO table VALUES($line);"
done > file
针对您对古鲁巴兰答案的评论,并给出
printf
一些TLC:
$ printf "something left %s something right\n" $(cat test.txt)
something left Test something right
$
针对您对古鲁巴兰答案的评论,并给出
printf
一些TLC:
$ printf "something left %s something right\n" $(cat test.txt)
something left Test something right
$
正如你可能已经从其他答案中收集到的,有很多方法可以做到这一点。他们甚至没有涉及到sed、Perl、Python等等。关键问题是“每行数据中有多少个值”,以及如何正确地将这些信息呈现给MySQL。如果输入行的格式很好,以便数据可以随时显示,那么它可以简单到:
data-generator-script |
while read line
do
echo "INSERT INTO Table VALUES($line);"
done
或:
另一方面,如果数据中有多个由空格分隔的值,字符串需要用引号括起来,那么生活就更混乱了:
data-generator-script |
awk '{printf("INSERT INTO Table(Col1, Col2, …, ColN) VALUES(%d, '%s', …, %d);\n", $1, $2, …, $N);}'
如果您必须在非空白字符上拆分,以允许多字字符串,那么您还必须处理更复杂的问题。如果它类似于管道,并且没有出现在数据中,那么您只需要将
-F'|'
添加到awk
脚本中。如果数据是CSV格式的,您可以使用第一种技术,但是如果数据中有多行字符串,则需要一个完整的CSV解析器工具。正如您可能从其他答案中收集到的,有很多方法可以做到这一点。他们甚至没有涉及到sed、Perl、Python等等。关键问题是“每行数据中有多少个值”,以及如何正确地将这些信息呈现给MySQL。如果输入行的格式很好,以便数据可以随时显示,那么它可以简单到:
data-generator-script |
while read line
do
echo "INSERT INTO Table VALUES($line);"
done
或:
另一方面,如果数据中有多个由空格分隔的值,字符串需要用引号括起来,那么生活就更混乱了:
data-generator-script |
awk '{printf("INSERT INTO Table(Col1, Col2, …, ColN) VALUES(%d, '%s', …, %d);\n", $1, $2, …, $N);}'
如果您必须在非空白字符上拆分,以允许多字字符串,那么您还必须处理更复杂的问题。如果它类似于管道,并且没有出现在数据中,那么您只需要将
-F'|'
添加到awk
脚本中。如果数据为CSV格式,则可以使用第一种技术,但如果数据中有多行字符串,你需要一个完整的CSV解析器工具。我已经看到了这个页面,但是我不知道如何让Prtff接受输入并把它放在另一个String中看到这个页面,但是我不知道如何让Prttf接受输入并把它放在另一个字符串的中间。