簡體   English   中英

在awk命令中使用FS和RS

[英]Using FS and RS in an awk command

我是Unix的新手,已經研究了好幾天了。

我需要通過Unix處理的csv文件中包含以下信息集。

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嗎?

請對我好一點。

謝謝,

我知道這不能完全解決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);

目前尚不清楚您希望擺脫使用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行更改為您的數據庫插入命令。

如果這個問題比您到目前為止告訴我們的更多,請使用google如何將awk輸出存儲在bash數組中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM