cut
cut命令用来显示行中的指定部分,删除文件中指定字段。cut经常用来显示文件的内容,类似于下的type命令。
语法格式:命令 选项 参数
常用选项:
-d 指定分隔符
-f 数字,取第几列 –f3,6三列和6列
-c 按字符取(空格也算)
例:文件file5.txt里面有一行内容
Im Q, is QQ xxxxxx
要求过滤出file5.txt文件里 oldxu以及552408925
方法
[root@localhost ~]# cut -d " " -f 2,5 file5.txt
Q, xxxxxx
#使用-d选项指定空格为分割符,把行内容分割为5列,然后使用-f选项取第二列Q和第五列的xxxxxx得出结果
我们想要的是Q和xxxxxx,但是中间有一个(,),那么把中间的 (,) 来去除掉要怎么办呢
要用到 sed 命令
sed
sed是一种流编辑器,它是文本处理中非常中的工具,能够完美的配合正则表达式使用,功能不同凡响。我们可以使用sed来把这个(,)替换掉。
[root@localhost ~]# cut -d " " -f 2,5 file5.txt | sed 's#,##g'
Q xxxxxx
awk
重点知识,暂时先了解
awk是一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入(stdin)、一个或多个文件,或其它命令的输出。它支持用户自定义函数和动态正则表达式等先进功能,是linux/unix下的一个强大编程工具。它在命令行中使用,但更多是作为脚本来使用。awk有很多内建的功能,比如数组、函数等,这是它和C语言的相同之处,灵活性是awk最大的优势。(暂时了解一下)
常用选项:
-F:指定分隔符,不指定的话默认空格为分隔符
-v: 赋值一个用户定义变量,将外部变量传递给awk
-f :从脚本文件中读取awk命令
-m[fr] :对val值设置内在限制,-mf选项限制分配给val的最大块数目;-mr选项限制记录的最大数目。这两个功能是Bell实验室版awk的扩展功能,在标准awk中不适用。
我们还可以使用强大的awk来实现上个题目:
[root@localhost ~]# awk -F "," '{print $1,$2}' file5.txt | awk '{print $2,$5}'
Q xxxxxx
[root@localhost ~]# awk -F "[ ,]" '{print $1,$2}' file5.txt '
Q xxxxxx
指定两个分隔符,分别为空格和(,)
高级用法
[ ,]+ +表示重复 前面的字符一次或多次
空格算一个分隔符
逗号算一个分隔符
空格和逗号挨在一起,也算一个分隔符
空格逗号空格,全算一个分隔符
1[root@localhost ~]# awk -F "[ ,]+" '{print $2,$5}' file5.txt
Q xxxxxx
wc
wc命令用来计算数字。利用wc指令我们可以计算文件的Byte数、字数或是列数,若不指定文件名称,或是所给予的文件名为“-”,则wc指令会从标准输入设备读取数据。
语法格式:命令 选项 参数
常用选项:
-l显示文件行数
-c显示文件字节
-w显示文件单词
例如:
统计一个文件有多少行,使用wc -l
[root@localhost ~]# wc -l /etc/services
11176 /etc/services
使用 wc 命令查看/etc/目录下的services文件一共有多少行
我们也可是使用cat方法来实现这个下效果,但是比较麻烦:
[root@localhost ~]# cat -n /etc/services | tail -1 | awk '{print $1}'
11176 /etc/services