-1

您好,我在 bash 中遇到问题。我有一个文件,我正在尝试在每行的最后一行插入一个点:

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

但不起作用=(。

因为我需要用一个词来计算行数我需要用同一个国家来计算行数

如果我做一个 grep grep 采取 colombia 和 colombias。

还有其他问题,我如何计算同一个国家的线路?

例如

1 colombia
2 brazil
3 ecuador
4 colombias
5 colombia

colombia 2
colombias 1
ecuador 1
brazil 1
4

3 回答 3

3

怎么样

cut -f2 -d' ' salida.csv | sort | uniq -c
于 2013-05-17T17:17:17.647 回答
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

...并且,请停止用不同的问题更新您的问题...

于 2013-05-17T17:12:28.920 回答
0

您的命令行有一些问题。有些很重要,有些是风格选择,但这是我的看法:

  1. 不必要cat的。 sed可以将文件名作为参数。

  2. 您的sed命令不需要g. 由于每一行只有一个末端,因此没有理由告诉它寻找更多。

  3. 不要寻找换行符,只需将行尾与$.

这给你留下了:

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

编辑:

如果您真正的问题是“我如何 grep for colombia,但不匹配colombias?”,您只需要使用-w标志来匹配整个单词:

grep -w colombia file

如果要计算它们,只需添加-c

grep -c -w colombia file

阅读grep(1)手册页以获取更多信息。

于 2013-05-17T17:11:12.923 回答