linux 命令 — sort、uniq

sort uniq

sort:对行或者文本文件排序
uniq:去除重复的行

常用

sort -n file.txt
按数字进行排序

sort -r file.txt
按逆序进行排序

sort -M file.txt
按月份进行排序

sort -C file
如果返回0表示已经排序

sort -nC file
返回0表示已经按照数字排序

sort -m sorted_file1 sorted_file2
合并两个已经排过序的文件,而且不需要对合并后的文件再次排序

按键或者列进行排序

sort -nrk 1 data.txt
-n,表示按照数字排序,-r表示使用逆序,-k n表示选择第n列进行排序

sort -nk 1, 2 file
按照第1-2两个字符进行排序,-k n1, n2 可以指定排序的键值

sort -z file
排序之后使用'\0'作为分隔符

uniq

uniq只能用于排过序的输入
sort unsort.txt | uniq
sort -u unsort.txt
uniq sorted.txt

sort unsorted.txt | uniq -c
统计各行在文件中出现的次数

sort unsorted.txt | uniq -d
找出文件中重复的行

sort data.txt | uniq -s 2 -w 3
将排序后文件中第3-6个字符作为键进行唯一值过滤,-s n 表示跳过前n个字符,-w m 表示选择的字符个数

uniq -z sorted.txt
输出内容使用"\0"作为分隔符

使用uniq生成字符串样式

输入:ahebhaaa
输出:4a1b1e2h

echo "ahebhaaa" | sed 's/[^.]/&\n/g' | sed '/^$/d' | sort | uniq -c | tr -d ' \n'
sed 's/[^.]/&\n/g': 将每一个字符后面追加一个换行符(将所有的字符使用该字符加"\n"替换),"&"表示前面正则表达式中匹配到的内容,这里也就是一个字符
sed '/^$/d': 搜索所有的空行并删除
sort: 按照字母表顺序排序
uniq -c: 统计每个字符出现的次数
tr -d ' \n': 删除空格和换行

转载于:https://www.cnblogs.com/sunshine-2015/p/6838766.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值