我正在寻找一个脚本/命令来读取一个文件,该文件具有200000行(每行之间都有空格,并且新行与上一行的计数不同),并像这样继续进行到结尾文件。
我在论坛中搜索了类似问题,但找不到能帮助我解决此问题的内容。
样本输入为:
2 3 4 5
3 100 105 40
2 1005 1002
2 1005 1002
4 100 105
0
3 100 105 40
3 100 105 40
输出应为:
5
对此有何建议?
答案 0 :(得分:3)
答案 1 :(得分:0)
请求的文字逻辑的所有bash实现:
cnt=0
last=''
while read line
do case "$line" in
"$last") continue ;;
*) last="$line"
(( cnt++ )) ;;
esac
done < in
echo "Total: $cnt"
在awk
中更好的实现:
$: awk 'BEGIN { last=""; cnt=0; }
$0 != last { last=$0; cnt++; }
END { print cnt; }' in
答案 2 :(得分:0)
您正在描述uniq | wc -l
,但是它将为示例输入提供6
。所以也许您想要sort -u | wc -l
。
$ sort -u test.txt | wc -l
5
$ sort -u test.txt
0
2 1005 1002
2 3 4 5
3 100 105 40
4 100 105
$ uniq test.txt
2 3 4 5
3 100 105 40
2 1005 1002
4 100 105
0
3 100 105 40
(多余的空行是我的提示的一部分)