2015-09-02 81 views
2

我正在寫一個bash腳本來遍歷具有給定值的文件行。如何在bash中輸入循環命令

我使用列出的可能值的命令是:

cat file.csv | cut -d';' -f2 | sort | uniq | head 

當我在使用它的循環這樣它停止工作:

for i in $(cat file.csv | cut -d';' -f2 | sort | uniq | head) 
do 
    //do something else with these lines 
done 

我如何使用管道命令for循環?

+0

這是一種程度上的工作,但不排序,如果我在這個循環中使用它們,uniq也沒有(我得到的線條像平常一樣切碎,但沒有排序和分組) – xanyi

回答

1

您可以使用此awk命令來獲得第3列的總和第二列的每個唯一值:

awk -F ';' '{sums[$2]+=$3} END{for (i in sums) print i ":", sums[i]}' file.csv 

輸入數據:

asd;foo;0 
asd;foo;2 
asd;bar;1 
asd;foo;4 

輸出:

foo: 6 
bar: 1 
+0

我需要使用其他列的其他列,所以我需要數據切分第一。回聲命令在那裏,看看它是否有效,但可悲的是不。 – xanyi

+0

我有一個表,如: ASD; FOO; 0 ASD; FOO; 2 ASD;杆; 1個 ASD; FOO; 4 我必須添加所有的號碼爲每一個的uniqe表達在第2欄 在這個例子中,輸出將是:foo:6,bar:1 – xanyi

+0

如何爲每個可能的唯一表達式調用awk? – xanyi