栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Linux Shell脚本攻略-行排序+uniq+临时文件命名与随机数

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Linux Shell脚本攻略-行排序+uniq+临时文件命名与随机数

行排序

uniq一般和sort一起使用,因为uniq命令要求输入数据必须经过排序

sort file1.txt file2.txt > sorted.txt
sort file1.txt file2.txt -o sorted.txt

# 按照数字顺序排列
sort -n file.txt
# 按照逆序排序
sort -r file.txt
# 按照月份排序(依照一月、二月、三月等)
sort -M month.txt
# 合并两个已排序过的文件
sort -m sorted1 sorted2
# 找出已排序文件中不重复的行
sort file1.txt file2.txt | uniq
# 检查文件是否已经排序过
#!/bin/bash
sort -C filename;
if [$? -eq 0]; then
	echo Sorted;
else
	echo Unsorted;
fi
# 如果文件已经排序,sort会返回为0的退出码($?),否则返回非0

# 依据键或列排序
$ cat data.txt
1	mac	2000
2	winxp	4000
3	bsd	1000
4	linux	1000
## -k指定排序所依据得字符,如果是单个数字,则指的是列号,-r告诉sort命令按照逆序进行排序
## 依据第1列,以逆序形式排序
$ sort -nrk 1 datat.txt
4	linux	1000
3	bsd	1000
2	winxp	4000
1	mac	2000
## 依据第2列进行排序
$ sort -k 2 data.txt
3	bsd	1000
4	linux	1000
1	mac	2000
2	winxp	4000
## -k后得整数制定了文本文件中得某一列。列与列之间由空格分隔,如果需要将特定范围内得一组字符(例如,第2列中得第4-5个字符)作为建,应该使用由点号分隔得两个整数来定义一个字符位置,然后将该范围内得第一个字符和最后一个字符用逗号连接起来

$ cat data.txt
1`alpha	300
2	beta	200
3	gamma	100
$ sort -bk 2.3,2.4 data.txt; # 按照m、p、t的顺序排序
3	gamma	100
1	alpha	300
2	beta	200
## 用第一个字符作为键
$ sort -nk 1,1 data.txt

# 为了使sort的输出与以作为终止符的xargs命令相兼容,采用以下命令
$ sort -z data.txt | xargs -0

# 有时文本中可能会包含一些像空格之类的多余字符,如果需要忽略标点符号并以字典序排序,可以使用
$ sort -bd unsorted.txt
## 其中-b用来忽略文件中的签到空白行,选项-d用于指明以字典序进行排序
uniq

uniq命令可以从给定输入中(stdin或命令行参数指定的文件)找出唯一的行,报告或删除那些重复的行
uniq只能用于排过序的数据,因此,uniq通常都与sort命令结合使用

$ cat sorted.txt
bash
foss
hack
hack

# uniq生成唯一的行
$ uniq sorted.txt
bash
foss
hack
# 也可以这样
$ sort unsorted.txt|uniq

# 只显示唯一的行(在输入文件中没有重复出现的行)
$ uniq -u sorted.txt
bash
foss
$ sort unsorted.txt|uniq -u

# 统计各行在文件中出现的次数
$ sort unsorted.txt | uniq -c
1	bash
1	foss
2	hack

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

# 可以结合-s和-w选项来指定键
## -s 指定跳过前N个字符
## -w 指定用于比较的最大字符数
$ cat data.txt
u:01:gnu
d:04:linux
u:01:bash
u:01:hack

$ sort data.txt | uniq -s 2 -w 2
d:04:linux
u:01:bash
## -s 2 跳过前两个字符
## -w 2 指定后续的两个字符

# -z选项可以生成由0值字节终止的输出
$ uniq -z file.txt
$ uniq -z file.txt | xargs -0 rm
临时文件命名与随机数

shell脚本经常需要存储临时数据,最适合存储临时数据的位置是/tmp(该目录中的内容在系统重启后会被清空)。有两种方法可以为临时数据生成标准的文件名

# 创建临时文件
$ filename=`mktemp`
$ echo $filename
/tmp/tmp.8xvhkjF5fH

# 创建临时目录
$ dirname=`mktemp -d`
$ echo $dirname
tmp.NI8xzW7VRX

# 仅仅只是想生成文件名,不希望创建实际的文件或目录
$ tmpfile=`mktemp -u`
$ echo $tmpfile
/tmp/tmp.RsGmilRpcT

# 基于模板创建临时文件名
## 注意模板中至少药有3个X
$ mktemp test.XXX
test.2tc
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/728342.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号