与上一行匹配时打印最后一行

时间:2015-07-03 06:38:30

标签: shell unix printing line

我有像

这样的文件内容

SRINIVAS,100

SRINIVAS,200

SRINIVAS,300

SRINIVAS,400

SRINIVAS,500

马杜,111

马杜,222

马杜,333

马杜,444

维杰,123

维杰,234

维杰,345

维杰,456

维杰,567

维杰,678

我想要这样的输出:

SRINIVAS,500

马杜,444

维杰,678

1 个答案:

答案 0 :(得分:0)

使用awk,您可以这样做:

awk -F',' '($0 && p != $1 && line){print line} $0{line=$0; p=$1} END{print line}' filename

($0 && p != $1 && line){print line}检查当前行是否为空,将第一个字段(名称字段)与p(最初为空)匹配,并检查line变量是否为空或为空。如果所有条件都通过,它将打印变量行。

如果行不为空或为空,

$0{line=$0; p=$1}将更新linep的值。

输出结果为:

srinivas,500
madhu,444
vijay,678

如果您想要额外的新行,请在($0 && p != $1 && line){print line "\n"}

中添加换行符