Linux-Chap4-Shell编程进阶

 

简单过滤器命令

简单过滤器功能:处理文件中的数据、编辑页面格式、截取文件内容、比较文件内容、字段和排序。

pr:改变文件打印格式。

-l n 设定页面长度为n行,默认为66 
-w n 设定页面宽度为n字符,默认为72,仅分列显示时有效(宽度不够时截掉)
-h str 设定页眉为str 
-n 对行进行编号 
-k 分k列输出 
-t 不显示页眉、页脚和边距

head:显示文件的开头。

tail:显示文件的结尾。

head -n k 指定显示文件前k行的内容
tail -n k 指定显示文件后k行的内容 
     -f 监控文件内容的增长

wh1516@PinkRAY:~/桌面$ ls -F | pr -n -l 30 -w 40 -3 | head -n 10


2021-01-13 19:01                 第 1 页


    1	cach 	 6   f1	     11	  lab4
    2	ch3/ 	 7   f2	     12	  linu
    3	CH4/ 	 8   f3	     13	  linu
    4	ch6e 	 9   lab2    14	  linu
    5	data 	10   lab3    15	  OS/

cut:垂直划分文件。

-c 按列剪切,每列宽度为一个字符 
-f 按字段剪切,字段分隔符由-d选项指定,默认为制表符 
-d 指定字段分隔符

cut -c1-5 passwdcp
root:
daemo
bin:x

cut -d: -f1-3 passwdcp
root:x:0
daemon:x:1
bin:x:2

paste:垂直粘贴文件。

-d 指定分隔符 
-s 合并行

wh1516@PinkRAY:~/桌面$ ls | paste -s -d"::\n"
1.txt:c:cachelab-handout
ch3:CH4:ch6emp.tar.gz
cond_exp.c:datalab-handout:lab2
lab3:lab4:linux
linuxch6:OS

//paste把所有行合并为一行,分隔符三个: : \n
//按次序插入分隔符

sort:对文件内容排序。(以行为单位)

-tchar 用char作为分隔符识别字段 
-k m,n 对第m个字段开始到第n个字段结束进行排序 
-k m.n 对第m个字段的第n个字符进行排序 
-u 删除重复行 
-n 数值排序 
-r 反转顺序排序 
-f 不区分大小写 
-c 查看文件是否有序 
-o file 将输出存入文件file中,可以和源文件同名

uniq(unique):定位文件中的重复行和非重复行。

-d 选择并显示输入中的重复行 
-u 选择并显示输入中的非重复行 
-c 显示每行出现的次数

//可与sort配合使用

tr(translate):字符替换将SET1中的字符替换为SET2中的相应字符。【只接受标准输入中的数据,不接受文件作为参数】

tr -option SET1 SET2
-d 删除字符 
-s 压缩连续字符

tr ":" ";" < psdex | head -n 3 //:替换为;
tr "[a-z]" "[A-Z]" < psdex | head -n 3 //小写字母替换为大写
tr -d "/" < psdex | head -n 3 //删除/

cmp(compare):逐字对比两个文件的内容,在遇到差异时终止。

cmp -option FILE1 FILE2 SKIP1 SKIP2
-b 输出第一个差异字节数、行数和字符 
-l 输出所有差异字节数 
-i 忽略文件1起始SKIP1字节和文件2起始SKIP2字节

comm(common):逐行对比文件内容,显示相同行和不同行【需要文件是有序的】

输出结果分三列显示:
    第1列显示FILE1中独有的行
    第2列显示FILE2中独有的行
    第3列显示共同行
常用选项:
    -1,-2,-3: 隐藏显示1,2,3列

diff(difference):显示两个文件的差别,并给出如何使其变得一样。

-q 只在文件不同时显示 
-s 只在文件相同时显示 
-c 显示相同内容 
-u 显示不同内容 
-i 忽略大小写 
-b 忽略重复空白

前 第一个文件 后 第二个文件

示例分析:

ls -l | sort -k 5 -nr | tr -s " " | cut -d" " -f5,9
以从大到小的顺序列出当前目录中的文件。
    ls -l输出列表,用空格分隔的
    给列表排序,sort按照第五个字段给其排序(-k 5),按数值排序-n,从大到小-r(不加则从小到大)
    替换,把多余空格去掉,tr -s " "
    截取 cut -d 只需要文件大小和名字。第五列为大小,第九列为名字
    
tr " \t:" "\n\n\n" <psdex | sort | uniq -c | pr -t -3
统计一个文件中每个单词出现的次数。

正则表达式过滤器

grep命令查找文件中的某一模式、使用正则表达式描述该模式。

基本正则表达式(BRE),扩展正则表达式(ERE)。sed命令。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值