2015-04-21 14 views
-1
 
"cola","colb","colc","cold","cole","colf" 
"a","b","c","d","e","f" 
"a1","b1","c1","d1","e1","f1" 
"a2","b2","c2","d2","e2","f2" 

假設這是CSV文件,我想grep從列"cole""e"並將其存儲到一個shell變量。然後使用shell變量作爲wget命令的一部分。grep的從CSV特定列的最近值文件

我該怎麼做?

+0

是第一行(可樂COLB COLC冷科爾colf)屬於你csv文件? – Cyrus

+0

第一行是列名並且是csv文件的一部分 –

+0

已將其更改爲最新值,並且以上是Excel中的表示形式,它確實是一個csv文件。 –

回答

1
set -f   # disable globbing 
variable="$(awk 'NR==2 {print $5}' file)" 
set +f 
+0

這是使用第7和第8列之間的打印行,分隔符似乎是關閉的。如果我刪除不需要的列,則打印$ 1/$ 2 ...等等,然後在變量上返回一個空值。 –

+0

這裏是設置-f輸出 $ $ 變量= 「$(AWK 'NR == 2 {打印$ 5}' a.csv)」 $設置+ F $回聲$變量 $變量=「$ (awk'NR == 2 {print $ 4}'a.csv)「 $ echo $ variable $ variable =」$(awk'NR == 2 {print $ 3}'a.csv)「 $ echo $變量 $ variable =「$(awk'NR == 2 {print $ 1}'a.csv)」 $ echo $ variable 這只是打印空白 –

1

awk非常適合這個。如果你知道列號,你可以簡單地做:

$ awk 'NR==2{print $5}' file.csv 
e 

這將打印第二行的第五個字段。如果要使用列名稱,則:

$ awk 'NR==1{for(i=1;i<=NF;i++)c[$i]=i}NR==2{print $c[col]}' col="cole" file.csv 
e 

只需設置col="<name of column to use>"

您可以使用命令替換存儲在變量中的值:

$ val="$(awk 'NR==2{print $5}' file.csv)" 
$ wget --what-ever-option "$val" 

或者只是用它來代替:

$ wget --what-ever-option "$(awk 'NR==2{print $5}' file.csv)"