前面给大家介绍了vim及gedit,今天给大家介绍几个常用的文本处理工具。
一.diff
diff 命令用于比较两个文件的内容 ,以了解其区别。它还可用于创建补丁文件。补丁文件用于在企业环境的多台计算机之间对相似文件进行更改。
diff 【options】file1 file2
我们新建file1 file2 来试试这个命令:
为了能实现打补丁这个功能,我们得先安装patch:
然后我们用diff 生成补丁文件,再用patch打补丁:
二.grep
文本搜索工具,根据用户指定的文本模式对目标文件进行逐行搜索,显示能够被模式所匹配到的行。配合正则表达式的使用可以实现强大的文本处理。
grep [OPTIONS] PATTERN [FILE]
下面我们来试试grep(我们将/etc/passwd复制到桌面来测试):
(1)过滤出只含root的行:
grep root passwd
(2)过滤出包含root的行,不区分大小写:
grep -i root passwd
(3)过滤出包含root的行,不区分大小写,并返回行号:
grep -ni root passwd
(4)统计包含root的行数:
grep -c root passwd
(5)统计不包含root的行数:
grep -cv root passwd
(6)过滤出以root开头的行:
grep ^root passwd
(7)过滤出以root结尾的行:
grep root$ passwd
三.cut
cut 用于 剪切 文件中的文本字段或列并将 其显示到标准输出
就拿刚才的passwd试试:
(1)只要passwd文件中以‘:’为分割线的第一列:
cut -d :-f 1 passwd
(2)只要passwd文件中的第一列字符:
cut -c 1 passwd
四.sort
sort 用于排序文本数据。该数据可以位于 文件中或其他命令输出中。
sort(选项)(参数)
下面说几个常用的参数:
-d:排序时,处理英文字母、数字及空格字符外,忽略其他的字符;
-n: 依照数值的大小排序;
-r:以相反的顺序来排序;
-t<分隔字符>:指定排序时所用的栏位分隔字符;
-u:忽略相同行使用
+<起始栏位>-<结束栏位>:以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位。
我们先编写一个文件试试这个sort:
(1)如果我们直接sort 一个文件,sort将文件/文本的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。
sort sort_file
(2)如果我们想比较以‘:’为分界线的第二列数字的大小:
sort -t : -k 2 -n sort_file
(3)如果我们想忽略重复行:
1)sort -u sort_file
2)sort sort_file | uniq
五.tr
tr命令可以对来自标准输入的字符进行替换和删除。它可以将一组字符变成另一组字符。
(1)将输出转换成大写输出:
echo "hello world" | tr 'a-z' 'A-Z'
(2)删除集合里面的字符并输出:
echo "hello world" | tr -d 'a-g'
六.sed
sed 命令是流编辑器 ,用于对文本数据流执行编辑。假定 要处理一个文件名 , sed 将对文件中的所有行执行搜索和 替换 , 以将修改后的数据发送到标准输出 ; 即 ,其实际上 并不修改现有文件。与 grep 一样 , sed通常在管道中使 用
(1)将passwd中每行出现的sbin替换成hahahaha:
我们发现如果某一行出现了两次sbin,只会替换第一个,如果想替换全文的,就要在后面加上 ’g‘:
这样是不会改变原文件的,只会改变模式空间中的文本:
文本处理命令就介绍到这里,不是很详细,只列出了常用的,而且这些命令单独感觉威力不是很大,利用管道配合在一起威力无穷!
下面举一个小小的例子:
现有两个文件,userfile和passwdfile,分别存储了用户的用户和密码,现在利用文本处理工具写一个脚本,来创建这些用户。
编写脚本 :
执行脚本:
再去/etc/group看看:
妥了!
————————————end——————————————