学习笔记7

第八单元:文本处理命令
1.cat和less命令:
A.cat
a.cat 文件名:显示文件内容;
b.cat -b 文件名 :在显示的每一行前加上一个序列号;
c.cat /etc/passwd /etc/group >file:把两个文件整合在一起;
B.less:分页浏览文件,例如:less /etc/passwd,分页浏览/etc/passwd这个文件;(分页浏览完文件之后,按“q”键退出浏览模式}
2.head和tail命令:
A.head
a.head -x 文件名:显示一个文件的前x行;
B.tail
a.tail -x 文件名:显示一个文件的后x行;
b.tail -f /var/log/message:监控系统目录(问题1:这是什么鬼?deepin系统提示没有 /var/log/message这个文件或目录
C. head -x 文件名 tail -x:显示一个文件的多少行到多少行;
3.grep命令:grep命令用来过滤关键字
A.grep x 文件名:在某一个文件中过滤含有x关键字的行;
B,grep ^x 文件名:在某一个文件中过滤以x开头的行;
C.grep x$ 文件名:在某一个文件中过滤以x结尾的行;
D.grep -i :过滤时忽略大小写;
E.grep -v :反向过滤;(问题2:反向过滤是什么意思?j加上-v参数之后并没有什么卵用啊
4.cut命令:
A.cut -d:指定分隔符;
B.cut -f:指定截取的段数;(问题3:cut是分割的命令吗?对于册子上的ifconfig eth0 |grep “inet addr” |cut -d : -f 2|cut -d “” -f 1命令运行没结果啊
5.wc sort diff patch
A.wc:统计文件的字符数,字数,行数
eg:

root@nana-pc:/home/xiyou# wc /etc/passwd
  35   55 1860 /etc/passwd

35为行数,55为字数,1860为字符数
wc -l: 统计文件的行数
wc -w:统计文件的字数
wc -c:统计文件的字符数
B.sort:sort将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出(默认)。
sort -n:纯数字排序
sort -r:倒序
sort -u:去冗余
eg:

root@nana-pc:/home/xiyou# cat seq.txt 
banana 
apple 
pear 
orange  
root@nana-pc:/home/xiyou# sort seq.txt 
apple 
banana 
orange 
pear
root@nana-pc:/home/xiyou# cat seq.txt 
banana 
apple 
pear 
orange 
pear  
root@nana-pc:/home/xiyou# sort seq.txt 
apple 
banana 
orange 
pear 
pear  
root@nana-pc:/home/xiyou# sort -u seq.txt 
apple 
banana 
orange 
pear  
pear由于重复被-u选项无情的删除了。
root@nana-pc:/home/xiyou# cat number.txt 
1
3
5
2
4
root@nana-pc:/home/xiyou# sort number.txt
1
2
3
4
5
root@nana-pc:/home/xiyou# sort -r number.txt 
5
4
3
2
1

sort -o: 由于sort默认是把结果输出到标准输出,所以需要用重定向才能将结果写入文件,形如sort filename > newfile。 但是,如果你想把排序结果输出到原文件中,用重定向可就不行了,例如:

root@nana-pc:/home/xiyou# sort -r number.txt >number.txt 
root@nana-pc:/home/xiyou# cat number.txt 
root@nana-pc:/home/xiyou#  

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

root@nana-pc:/home/xiyou# cat number.txt 
1
3
5
2
4 
root@nana-pc:/home/xiyou# sort -r number.txt -o number.txt 
root@nana-pc:/home/xiyou# cat number.txt 
5
4
3
2
1

sort -u file |unique -c:去冗余排序并把冗余的数量统计出来
关于sort命令更多详解请点这里
C.diff&patch
a.diff:用于比较两个文件的不同。diff后面可以接两个文件名或两个目录名。 如果是一个目录名加一个文件名,那么只作用在那么个目录下的同名文件。如果是两个目录的话,作用于该目录下的所有文件,不递归。如果我们希望递归执行,需要使用-r参数。命令diff A B > C ,一般A是原始文件,B是修改后的文件,C称为A的补丁文件。不加任何参数生成的diff文件格式是一种简单的格式,这种格式只标出了不一样的行数和内容。我们需要一种更详细的格式,可以标识出不同之处的上下文环境,这样更有利于提高patch命令的识别能力。这个时候可以用-c开关。
eg:

root@nana-pc:/home/xiyou# vim file
root@nana-pc:/home/xiyou# vim file1
root@nana-pc:/home/xiyou# diff file file1
1c1                      第几行有不同
< server4.example.com     file与file1不同的内容
---
> station4.example.com    file1与file不同的内容

b.patch:用于打补丁
eg:

root@nana-pc:/home/xiyou# cat file
server4.example.com
root@nana-pc:/home/xiyou# file file
file: ASCII text
root@nana-pc:/home/xiyou# cat file1
station4.example.com
root@nana-pc:/home/xiyou# diff -u file file1 >file.patch生成补丁文件
root@nana-pc:/home/xiyou# ls
code  file  file1  file.patch  公共的  模板  视频  图片  文档  下载  音乐  桌面
root@nana-pc:/home/xiyou# patch -b file file.patch 给file文件打补丁 `-b`备份原文件
patching file file      提示操作成功
root@nana-pc:/home/xiyou# diff file file1 比较两个文件没有不同
root@nana-pc:/home/xiyou# ls
code  file  file1  file.orig  file.patch  公共的  模板  视频  图片  文档  下载  音乐  桌面  `file.orig`为原文件的备份
root@nana-pc:/home/xiyou# cat file
station4.example.com
root@nana-pc:/home/xiyou# cat file1
station4.example.com
root@nana-pc:/home/xiyou# cat file.orig 
server4.example.com
root@nana-pc:/home/xiyou# cat file.patch 
--- file    2016-03-17 17:00:33.249738027 +0800
+++ file1   2016-03-17 17:01:25.385739884 +0800
@@ -1 +1 @@
-server4.example.com
+station4.example.com

问题4:虽然在网上搜索了diff和patch具体的用法,可是感觉对这两个命令理解还不是很透彻。打补丁到底是为了干什么?而且如上例,打补丁之前file和file1的内容是不同的,为什么打补丁之后内容就一样了呢?而且打补丁之后生成的file.patch里的内容都是什么鬼?打补丁之前为什么要备份原文件?

**补充:**diff和patch是一对工具,在数学上来说,diff是对两个集合的差运算,patch是对两个集合的和运算。diff比较两个文件或文件集合的差异,并记录下来,生成一个diff文件,这也是我们常说的patch文件,即补丁文件。patch能将diff文件运用于 原来的两个集合之一,从而得到另一个集合。举个例子来说文件A和文件B,经过diff之后生成了补丁文件C,那么着个过程相当于 A -B = C ,那么patch的过程就是B+C = A 或A-C =B。
因此我们只要能得到A, B, C三个文件中的任何两个,就能用diff和patch这对工具生成另外一个文件。对diff和patch的更多了解请点这里
6.aspell:检测拼写
eg:

root@nana-pc:/home/xiyou# aspell -c file 
错误:No word lists can be found for the language "zh_CN".
root@nana-pc:/home/xiyou# cat file
station4.example.c

-c为交互式检测file的拼写
问题5:上面错误什么意思?由于命令执行中道崩卒,所以也就不知道检测拼写到底是干什么的
7.tr&sed
A.tr:转换文件中字符的大小写
eg:

root@nana-pc:/home/xiyou# vim file
root@nana-pc:/home/xiyou# tr 'a-z' 'A-Z' file
tr: 额外的操作数 "file"
Try 'tr --help' for more information.
root@nana-pc:/home/xiyou# tr 'a-z' 'A-Z' <file
FILE FILE FILE

tr 'a-z' 'A-Z' <file:把file中的小写全部转换成大写
tr 'A-Z' 'a-z' <file:把file中的大写全部转换成小写
注意:tr命令只是改变文件的输出内容,不改变原文件的内容
B.sed:替换文件输出结果中的指定字符
eg:

root@nana-pc:/home/xiyou# sed 's/bin/hello/g' /etc/passwd
                   全文替换
root:x:0:0:root:/root:/hello/bash
daemon:x:1:1:daemon:/usr/shello:/usr/shello/nologin
hello:x:2:2:hello:/hello:/usr/shello/nologin
sys:x:3:3:sys:/dev:/usr/shello/nologin
sync:x:4:65534:sync:/hello:/hello/sync
games:x:5:60:games:/usr/games:/usr/shello/nologin
man:x:6:12:man:/var/cache/man:/usr/shello/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/shello/nologin
mail:x:8:8:mail:/var/mail:/usr/shello/nologin
news:x:9:9:news:/var/spool/news:/usr/shello/nologin
...
root@nana-pc:/home/xiyou# sed '1,5s/bin/hello/g' /etc/passwd
      指定行数替换
root:x:0:0:root:/root:/hello/bash
daemon:x:1:1:daemon:/usr/shello:/usr/shello/nologin
hello:x:2:2:hello:/hello:/usr/shello/nologin
sys:x:3:3:sys:/dev:/usr/shello/nologin
sync:x:4:65534:sync:/hello:/hello/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
...
root@nana-pc:/home/xiyou# sed '/root/,/ftp/s/bin/hello/g' /etc/passwd         
指定字之间的替换
root@nana-pc:/home/xiyou# sed -e 's/bin/hello/g' -e 's/bash/lee/g' /etc/passwd
转换多余

还可以把转换策略写到文件中
eg:

root@nana-pc:/home/xiyou# vim file
root@nana-pc:/home/xiyou# cat file
s/bin/hello/g
s/bash/lee/g
root@nana-pc:/home/xiyou# sed -f file /etc/passwd
-f用文件中的策略进行转换
root@nana-pc:/home/xiyou# sed 's/^root/lee/g' /etc/passwd
以替换root开头的行中的root字符
lee:x:0:0:root:/root:/bin/bash
...
root@nana-pc:/home/xiyou# sed 's/nologin$/hello/g' /etc/passwd
替换以nologin结尾行中nologin字符

注意:sed命令只是改变文件的输出内容,不改变原文件的内容

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值