Linux_Shell脚本学习第二章-命令之乐(下)

本文深入探讨了Linux Shell脚本中的命令,包括`sort`和`uniq`用于行排序和去重,`mktemp`创建临时文件,`split`和`csplit`分割文件,以及文件名操作和重命名。通过实例展示了如何利用这些工具高效地管理和操作文件。
摘要由CSDN通过智能技术生成

一、行排序

1.1 sort

1.1.1 排序一组文件(例如file1.txt和file2.txt)
$ sort file1.txt file2.txt > sorted.txt

或是

$ sort file1.txt file2.txt -o sorted.txt
1.1.2 按照数字顺序排序
$ sort -n file.txt
1.1.3 按照数字顺序排序
$ sort -r file.txt
1.1.4 按照月份排序(依照一月、二月、三月……)
$ sort -M months.txt
1.1.5 合并两个已排序过的文件
$ sort -m sorted1 sorted2
1.1.6 找出已排序文件中不重复的行
$ sort file1.txt file2.txt | uniq
1.1.7 检查文件是否已经排序过
#!/bin/bash
#功能描述:排序
sort -C filename ;
if [ $? -eq 0 ]; then
echo Sorted;
else
echo Unsorted;
fi

如果文件已经排序,sort会返回为0的退出码($?),否则返回非0。

1.1.8 依据列排序

如果输入数据的格式如下,我们可以按列排序:

$ cat data.txt
1 mac 2000
2 winxp 4000
3 bsd 1000
4 linux 1000

-k指定了排序所依据的字符。-k后的整数指定了文本文件中的某一列。列与列之间由空格分隔。如果是单个数字,则指的是列号。-r告诉sort命令按照逆序进行排序。例如:

# 依据第1列,以逆序形式排序
$ sort -nrk 1 data.txt
4 linux 1000
3 bsd 1000
2 winxp 4000
1 mac 2000
# -nr表明按照数字顺序,采用逆序形式排序

# 依据第2列进行排序
$ sort -k 2 data.txt
3 bsd 1000
4 linux 1000
1 mac 2000
2 winxp 4000
1.1.9 输出与以\0作为终止符的xargs命令相兼容
$ sort -z data.txt | xargs -0
# 终止符\0用来确保安全地使用xargs命令
1.1.10 忽略标点符号并以字典序排序
$ sort -bd unsorted.txt

其中,选项-b用于忽略文件中的前导空白行,选项-d用于指明以字典序进行排序。

1.2 uniq

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

1.2.1 生成唯一的行(打印输入中的所有行,但是其中重复的行只打印一次)
cat sorted.txt
bash
foss
hack
hack
$ uniq sorted.txt
bash
foss
hack

或是

$ sort unsorted.txt | uniq
1.2.2 只显示唯一的行
$ uniq -u sorted.txt
bash
foss

或是

$ sort unsorted.txt | uniq -u
1.2.3 统计各行在文件中出现的次数
$ sort unsorted.txt | uniq -c
1 bash
1 foss
2 hack
1.2.4 找出文件中重复的行
$ sort unsorted.txt | uniq -d
hack
1.2.5 输出与以\0作为终止符的xargs命令相兼容

下面的命令将删除所有指定的文件,这些文件的名字是从files.txt中读取的:

$ uniq -z file.txt | xargs -0 rm

如果某个文件名出现多次,uniq命令只会将这个文件名写入stdout一次,这样就可以避免出现rm: cannot remove FILENAME: No such file or directory。

</

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值