我对Unix非常陌生,并且已经研究了这个问题好几天了。
我在csv文件中有以下信息集,我需要通过Unix操作。
BEIGE , 19.50 , STYLE , 05/05/14
BEIGE , 19.50 , STYLE , 05/06/14
BEIGE , 19.50 , STYLE , 05/07/14
使用如下所示的awk命令,我成功抓取第一行的第一个字段;
l_colour=$(awk 'BEGIN{FS=","} END {print $1}' file)
我需要在第一行将每个字段存储为变量(l_colour,l_price,l_type,l_in_date),导入到数据库中,然后对第二行执行相同操作,依此类推。
我可以在同一个awk语句中使用FS和RS吗?
请放轻松我。
谢谢,
答案 0 :(得分:0)
我知道这不是PO问题的完全答案,但是将数据从cvs插入数据库可以通过以下方式完成:
cat file | tr -s ' ' | sed 's/^\(.*\)$/INSERT INTO table(l_colour, l_price, l_type, l_in_date) VALUES(\1);/'
输出:
INSERT INTO table(l_colour, l_price, l_type, l_in_date) VALUES(BEIGE , 19.50 , STYLE , 05/05/14);
INSERT INTO table(l_colour, l_price, l_type, l_in_date) VALUES(BEIGE , 19.50 , STYLE , 05/06/14);
INSERT INTO table(l_colour, l_price, l_type, l_in_date) VALUES(BEIGE , 19.50 , STYLE , 05/07/14);
答案 1 :(得分:0)
目前尚不清楚你希望在部分内容中使用awk。对于您发布的输入,您可以这样做:
$ while read -r l_colour c l_price c l_type c l_in_date
do
echo "now insert \"$l_colour\", \"$l_price\", \"$l_type\", \"$l_in_date\""
done < file
now insert "BEIGE", "19.50", "STYLE", "05/05/14"
now insert "BEIGE", "19.50", "STYLE", "05/06/14"
now insert "BEIGE", "19.50", "STYLE", "05/07/14"
将echo
行更改为数据库插入命令的任何内容。
如果这个问题比你到目前为止告诉我们的更多,谷歌如何在一个bash数组中存储awk输出。