重定向

(1)

现在的 bash 版本提供了第二种方法,更精简合理的方法来执行这种联合的重定向。


[me@linuxbox ~]$ ls -l /bin/usr &> ls-output.txt


在这个例子里面,我们使用单单一个表示法 &> 来重定向标准输出和错误到文件 ls-output.txt。


(2)

事实上,如果我们需要删除一个文件内容(或者创建一个新的空文件),可以使用这样的技巧:


[me@linuxbox ~]$ > ls-output.txt


简单地使用重定向符,没有命令在它之前,这会删除一个已存在文件的内容或是创建一个新的空文件。


(3)unique和sort一起使用 (unique -c/-d/-u这三个选项最重要)

uniq命令可以去除排序过的文件中的重复行,因此uniq经常和sort合用。也就是说,为了使uniq一起作用,所有的重复行必须是相邻的,它必须是相邻的,才认为是重复,不相邻的不认为是重复行。


语法:uniq [-cdu][-f<栏位>][-s<字符位置>][-w<字符位置>][--help][--version][输入文件][输出文件]


补充说明:uniq可检查文本文件中重复出现的行列。


参数:

-c或--count   在每列旁边显示该行重复出现的次数。
-d或--repeated   仅显示重复出现的行列。
-f<栏位>或--skip-fields=<栏位>   忽略比较指定的栏位。
-s<字符位置>或--skip-chars=<字符位置>   忽略比较指定的字符。
-u或--unique   仅显示出一次的行列。
-w<字符位置>或--check-chars=<字符位置>   指定要比较的字符。
--help   显示帮助。
--version   显示版本信息。


[输入文件]   指定已排序好的文本文件。


[输出文件]   指定输出的文件。 uniq命令的作用:显示唯一的行,对于那些连续重复的行只显示一次!


以下是一些常见的例子。


当你有一个包含相同条目的雇员(employee)的文件,你可以以如下方式来删除相同的条目


$ sort namesd.txt | uniq 
$ sort –u namesd.txt


如果你想知道有多少行是相同的,可以像下面这个做。以下例子中的第一列显示该行的重复数量。在本例中,以Alex和Emma开头的行,在文件中有两个重复行。


$ sort namesd.txt | uniq –c 
2 Alex Jason:200:Sales 
2 Emma Thomas:100:Marketing 
1 Madison Randy:300:Product Development 
1 Nisha Singh:500:Sales 
1 Sanjay Gupta:400:Support


3. 以下命令仅仅列出了相同的条目

$ sort namesd.txt | uniq –cd 
2 Alex Jason:200:Sales 
2 Emma Thomas:100:Marketing


(4)sort的 -u/-r/-o/-n/-t/-k选项

补充说明:sort可针对文本文件的内容,以行为单位来排序。


参  数:
  -b   忽略每行前面开始出的空格字符。
  -c   检查文件是否已经按照顺序排序。
  -f   排序时,忽略大小写字母。
  -M   将前面3个字母依照月份的缩写进行排序。
  -n   依照数值的大小排序。
  -o<输出文件>   将排序后的结果存入指定的文件。
  -r   以相反的顺序来排序。
  -t<分隔字符>   指定排序时所用的栏位分隔字符。
  -k  选择以哪个区间进行排序。


-u: 在输出行中去除重复行。

-r: sort默认的排序方式是升序,如果想改成降序,就加个-r就搞定了。

-o: 由于sort默认是把结果输出到标准输出,所以需要用重定向才能将结果写入文件,形如sort filename > newfile。

[rocrocket@rocrocket programming]$ sort -r number.txt > number.txt
[rocrocket@rocrocket programming]$ cat number.txt
[rocrocket@rocrocket programming]$
看,竟然将number清空了。


就在这个时候,-o选项出现了,它成功的解决了这个问题,让你放心的将结果写入原文件。这或许也是-o比重定向的唯一优势所在。


[rocrocket@rocrocket programming]$ cat number.txt
1
3
5
2
4
[rocrocket@rocrocket programming]$ sort -r number.txt -o number.txt
[rocrocket@rocrocket programming]$ cat number.txt
5
4
3
2
1

-n: 按照数字进行排序。由于sort默认是把结果输出到标准输出,所以需要用重定向才能将结果写入文件,形如sort filename > newfile。

-t: 指定间隔符号,-k指定列数。

$ sort -n -k 2 -t ‘:’ facebook.txt
apple:10:2.5
orange:20:3.4
banana:30:5.5
pear:90:2.3

其他的sort常用选项

-f会将小写字母都转换为大写字母来进行比较,亦即忽略大小写

-c会检查文件是否已排好序,如果乱序,则输出第一个乱序的行的相关信息,最后返回1

-C会检查文件是否已排好序,如果乱序,不输出内容,仅返回1

-M会以月份来排序,比如JAN小于FEB等等

-b会忽略每一行前面的所有空白部分,从第一个可见字符开始比较。














评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值