在awk命令中使用FS和RS

时间:2014-05-15 10:32:24

标签: bash unix awk

我对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吗?

请放轻松我。

谢谢,

2 个答案:

答案 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输出。