2013-05-17 56 views
-1

你好,我在bash中有一個問題。 我有一個文件,我想在每行的最後一行插入點:用bash在文件中插入字符

cat file | sed s/"\n"/\\n./g > salida.csv 

但不工作=(

,因爲我需要用一個字 我需要數算線。與同一個國家的線條

,如果我做的grep grep的採取哥倫比亞和哥倫比亞。

和其他問題,我怎麼能算有同一個國家線?

例如

1 colombia 
2 brazil 
3 ecuador 
4 colombias 
5 colombia 

colombia 2 
colombias 1 
ecuador 1 
brazil 1 
+2

'sed's /$/./'file'? – Kevin

+1

@Kevin你可以發表一個答案 – Kent

+0

提供例子,以便我們瞭解你真正想要達到的目標。 –

回答

1

因爲sed的溶液發佈(可能是這個任務的最佳工具),我會貢獻一個awk

awk '$NF=$NF"."' file > salida.csv 

更新:

$ cat input 
1 colombia 
2 brazil 
3 ecuador 
4 colombias 
5 colombia 

$ awk '{a[$2]++}END{for (i in a) print i, a[i]}' input 
brazil 1 
colombias 1 
ecuador 1 
colombia 2 

...,請停止更新與不同的問題你的問題......

+0

好的。但最後問題是什麼?以及你如何將awk與貓聯繫起來? –

+1

@BenitoCamelas你不需要'貓'。 'awk','sed'等人可以自己處理文件。另見[無用的貓](http://partmaps.org/era/unix/award.html)。 'a'是一個臨時數組,用於構建您要求的輸出。 –

0

您的命令行有幾個問題。一些問題,有些是款式選擇,但這裏是我的看法:

  1. 不必要catsed可以將文件名作爲參數。您的sed命令不需要g。由於每條線只有一端,因此沒有理由告訴它尋找更多。

  2. 不要查找換行符,只需將行尾符合$即可。

這使得您:

sed s/$/./ file > salida.csv 

編輯:

如果你真正的問題是 「我如何用grep爲colombia,但不能匹配colombias?」,你只需要使用在-w標誌全字匹配:

grep -w colombia file 

若y OU要算來,只需添加-c

grep -c -w colombia file 

閱讀grep(1) man page以獲取更多信息。

+0

但我怎麼能指望其他國家?我有2個哥倫比亞,但我有其他國家,我不知道,但該國在文件 –

+2

你一直在不斷編輯你的問題,要求不同的事情。如果我們的答案與事後添加的新信息不匹配,您幾乎不會責怪我們。 –

3

怎麼樣

cut -f2 -d' ' salida.csv | sort | uniq -c 
+0

出現(當前)成爲OP真正問題的出色解決方案。 +1。 –