Linux 文本处理工具

来源:互联网 发布:scala二维数组 编辑:程序博客网 时间:2024/06/06 14:27

 文本处理工具

一、diff命令:用来比较两个文件的不同

1.编辑两个内容不完全相同的文件

[root@localhost ~]# cd /mnt

[root@localhost mnt]# vim first

[root@localhost mnt]# vim second

[root@localhost mnt]# cat first

linux westos

[root@localhost mnt]# cat second

linux westos

redhat

2.使用diff命令进行比较

[root@localhost mnt]# diff firstsecond   #结果显示文件中不同的内容

1a2

> redhat   #不同内容

[root@localhost mnt]# diff -c firstsecond  #查看文件不同位置的上下行

*** first  2017-04-2921:13:54.613839495 -0400

--- second       2017-04-2921:14:17.441839495 -0400

***************

*** 1 ****

--- 1,2 ----

 linux westos

+ redhat #不同内容

[root@localhost mnt]# diff -u firstsecond  #按一定格式比较

--- first    2017-04-2921:13:54.613839495 -0400

+++ second     2017-04-2921:14:17.441839495 -0400

@@ -1 +1,2 @@

 linux westos

+redhat

3.生成补丁文件

[root@localhost mnt]# diff -u first second> first.path  #生成补丁文件

[root@localhost mnt]# ls

first first.path  second  #first.path为补丁文件

4.使用补丁文件对系统中相似文件进行更改

(1)先下载patch软件包

  yuminstall patch -y

(2)patch firstfirst.path  #文件内容更改,

如下:原文件内容将改变

(3)patch -b first first.path  #将原文件备份,再进行修补

[root@localhost mnt]# patch firstfirst.path -b

patching file first

[root@localhost mnt]# ls

first first.orig  first.path  second #firest.orig为原文件的备份文件

[root@localhost mnt]# cat first

linux westos

redhat

[root@localhost mnt]# cat first.orig  #备份文件内容即为原文件内容

linux westos

二、grep查找关键字

1.文件内容中查找关键字

grep   关键字   文件名 #精准查找对对应的关键字

grep   -i   关键字  文件名 #粗略查找,包含大小写

grep   -i   关键字  文件名 -v  #查找相反项

grep    -i    -E    “关键字|关键字2”    文件名  #过滤各个关键字

grep    -i    -E    "^关键字1|关键字2$"   文件名  #过滤以关键字1开始并以关键字2结束的内容,可独立使用

grep   -i   -E   "^关键字1|关键字2$"   文件名 -v  #反向:过滤出不以关键字1开始或不以关键字2结束的内容

grep   关键字  文件名 -c  #关键字出现的总行数

grep   关键字  文件名 -n  #关键字出现再第几行

2.查找目录中包含某关键字的文件

grep   -r   关键字  目录名  #在目录中查找含有某关键字的文件

grep   -r   关键字  目录名 -n #关键字出现在哪个文件的第几行

grep   -r   关键字  目录名 -c  #关键字在目录中各个文家出现的总行数

三、cut命令

1.cut   -f  #显示指定的列

  cut  -d  :  -f  <number>   文件名  #指定分隔符是“:”,截取第几列

如:cut   -d  :  -f1   文件名  #从文件中截取第一段

cut   -d  :   -f   1,3   文件名  #截取第1段和第3段

cut   -d   :   -f   1-3   文件名  #截取1到3段

cut   -c   1-3   文件名  #截取1到3列字符

cut   -d     “  “     -f               #指定分隔符是空格,截取某些段

四、sort命令--排序

1.sort     文件名                         #将文件按第一列字符排序

 sort    -r    文件名                       #将文件按第一列字符倒序排序

2.sort    -n   文件名                   #将文件内容排序(顺序)

 sort    -nr    文件名                  #将文件按逆序排序

3.sort   -u    文件名                   #文件内容按第一列字符排序,重复的内容将只显示一次

4.sort    排序方式    文件名 |   unip   -c                       #排序,重复的内容只显示一次,并且显示重复个数

  其中:uniq   -c                           #删除重复的行,且显示重复次数


5.sort   -t   间隔符   -k   <number>   排列方式              #以间隔符为间隔,按第几段由某排序方式进行排序

6.sort  排序方式 文件名 | uniq -d  #将文件中重复的内容进行排序

  uniq -d   #显示重复行

7.使用sort来筛选进程信息

五、tr 命令--字符转换

1.将文件中小写转换成小写

  tr   'a-z'    'A-Z'    <   文件名

2将文件只大写转换成大写

  tr  'A-Z'   'a-z'   <   文件名

六、sed命令--非交互式转换字符

1.全文的字符转换实现

 (1)sed   's/原字符串/新字符串/g'    文件名               ##文件实际内容不改变

  sed    's/原字符串/新字符串/g'   文件名   -i                     ##文件内容改变

(2) sed  's/原字符串/新字符串/'  文件名       ##每行第一次出现的原字符串被转换,实际内容不变

2.文件中多个字符串的转换

(1)sed -e  's/原字符串/新字符串/g'  -e  's/原字符串/新字符串/g' 文件名                 #文件内容不作更改

     -e                #表示先执行一条转换命令,再执行下一条转换命令,及完成两条命令连接

(2)sed -e 's/原字符串/新字符串/g' -e 's/原字符串/新字符串/g' 文件名 -i  #文件内容被更改

3.非交互式转换字符

  vim文件名

 s/原字符串/新字符串/

 s/原字符串/新字符串/

 ...

 :wq

调用命令格式如下:

 sed  -f   文件名   需更改的文件名    ##文件内容不作更改

 sed  -f   文件名   需更改的文件名 -i           #文件内容被更改

4.sed   '数1,数2/原字符串/新字符串/g'   文件名    #第几行至第几行都被更改

  sed   -e    '数1/原字符串/新字符串/g'   -e   '数2/原字符串/新字符串/g'   -e ...  文件名     #分别更改指定行且内容不作更改

5. sed   数x    文件名                   #屏蔽第几行不显示

  sed   数d   文件名                      #删除第几行

  sed   -n   数p   文件名               #只显示第几行

  sed  -n   数1,数2p   文件名                                        #显示数1至数2行

  sed  -ne   数1p    -ne   数2p   -ne ... 文件名                 #显示指定的行

七、awk命令

  awk-F 间隔符 '{printf $数字}' 文件名              #以空格符为间隔符,显示指定的某列

 

0 0