![](/img/trans.png)
[英]print only first word using awk command when RS=“” and FS=“\n”
[英]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.