阿Q的Linux运维学习之路(day8-3)-Linux文件管理-字符处理命令(cut、awk、wc)

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

发布了38 篇原创文章 · 获赞 0 · 访问量 600

猜你喜欢

转载自blog.csdn.net/qq_39095114/article/details/104757590