第6天文本处理工具

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第6天文本处理工具相关的知识,希望对你有一定的参考价值。

cat

?文件查看命令:
cat,tac,rev
?cat [OPTION]... [FILE]...
-E:显示行结束符$(有些配置文件,多了空格可以看)
-n:对显示出的每一行进行编号(加数字行号)
-A:显示所有控制符
-b:非空行编号
-s:压缩连续的空行成一行
?tac(竖着倒序的行列排队)
?rev(同一行左右对调)

more
分页查看文件内容
?more:分页查看文件 ls -R /etc |less
more [OPTIONS...] FILE...
-d: 显示翻页及退出提示
?less:一页一页地查看文件或STDIN输出
查看时有用的命令包括:
/文本 搜索 文本
n/N 跳到下一个 或 上一个匹配
less 命令是man命令使用的分页器

显示文本前或后行内容(前几行)
head [OPTION]... [FILE]...(默认显示前10行)
-c # 指定获取前#字节()
-n # 指定获取前#行 (head -n 3 文件)
-# 指定行数
tail [OPTION]... [FILE]...(seq 10 tail -3)(看后几行)(看日志文件/var/log/)
-c # 指定获取后#字节
-n # 指定获取后#行
-# 同上
-f 跟踪显示文件fd新追加的内容,常用日志监控/tail -f var/log/)
相当于 --follow=descriptor
-F 跟踪文件名,相当于--follow=name --retry
?tailf 类似tail –f,当文件不增长时并不访问文件

按列抽取文本cut和合并文件paste(切列)
?cut [OPTION]... [FILE]...
-d DELIMITER: 指明分隔符,默认tab(cut -d: -f1,3-5 --output-delimiter=";" /etc/passwd)
(cut -d: -f1,3-5 /etc/passwd)
-f FILEDS:
#: 第#个字段
#,#[,#]:离散的多个字段,例如1,3,6
#-#:连续的多个字段, 例如1-6
混合使用:1-3,7
-c 按字符切割
--output-delimiter=STRING指定输出分隔符

cut和paste
?显示文件或STDIN数据的指定列
cut -d: -f1 /etc/passwd
cat /etc/passwd | cut -d: -f7
cut -c2-5 /usr/share/dict/words
?paste 合并两个文件同行号的列到一行
paste [OPTION]... [FILE]...
-d 分隔符:指定分隔符,默认用TAB
-s : 所有行合成一行显示
示例:
paste f1 f2
paste -s f1 f2

收集文本统计数据wc
?计数单词总数、行总数、字节总数和字符总数
?可以对文件或STDIN中的数据运行
wc story.txt
39 237 1901 story.txt
行数 字数 字节数
?常用选项
-l 只计数行数
-w 只计数单词总数
-c 只计数字节总数
-m 只计数字符总数
-L 显示文件中最长行的长度

ifconfig eth0| head -n2 |tail -1

cut 剪切

取分区利用率最大值

[[email protected] data]#cut -d: -f1,3-5 /etc/passwd

root:x:0:0:root:/root:/bin/bash(原数据)

root:0:0:root(命令后的数据)

[[email protected] data]#ifconfig ens33 | head -n2 | tail -n1 | tr -s " " | cut -d" " -f3

[[email protected] data]#ifconfig ens33 | head -n2(前2行) | tail -n1(后一行) | tr -s " "(把多个空格压缩) | cut -d" " -f3(取第三个空格前面的)

grep -v "root" /etc/passwd

匹配次数:用在要指定次数的字符后面,用于指定前面的字符要出现的次数

  • 匹配前面的字符任意次,包括0次
    贪婪模式:尽可能长的匹配
    .* 任意长度的任意字符
    ? 匹配其前面的字符0或1次
    + 匹配其前面的字符至少1次
    {n} 匹配前面的字符n次
    {m,n} 匹配前面的字符至少m次,至多n次
    {,n} 匹配前面的字符至多n次
    {n,} 匹配前面的字符至少n次

显示/proc/meminfo文件中以大小s开头的行(要求:使用两种方法)
cat /proc/meminfo | grep "^S"
显示/etc/passwd文件中不以/bin/bash结尾的行
[[email protected] data]#cat /etc/passwd | grep -v "/bin/bash"
显示用户rpc默认的shell程序
[[email protected] ~]#cat /etc/passwd | grep -w "rpc" | grep -o "nologin"
nologin
找出/etc/passwd中的两位或三位数
[[email protected] data]#grep -oEw "[0-9]{2,3}" /etc/passwd
显示CentOS7的/etc/grub2.cfg文件中,至少以一个空白字符开头的且后面有非空白字符的行
[[email protected] ~]#cat /etc/grub2.cfg | grep "^[[:space:]]./" (^不是空白开头,.是所有字符,/是这个grub2这个文件带的,就是所有字符)

[[email protected] ~]#cat /etc/passwd | grep -E "root|guoguo"(这加E就是|或者的意思)
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
guoguo:x:1000:1000:guoguo:/home/guoguo:/bin/bash
[[email protected] ~]#cat /etc/passwd | grep "root|guoguo" (不加E就是这个意思)
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
guoguo:x:1000:1000:guoguo:/home/guoguo:/bin/bash

另一个练习1、显示三个用户root、mage、wang的UID和默认shell
[[email protected] ~]#cat /etc/passwd | grep -E "root|guoguo" |tr -s ":" " "| cut -d" " -f3,7|tr "/" " "|cut -d" " -f1,4
王老师:[[email protected] ~]#grep -E "^(root|guoguo)" /etc/passwd |cut -d: -f1,7
root:/bin/bash
guoguo:/bin/bash

、使用egrep取出/etc/rc.d/init.d/functions中其基名
[[email protected] ~]#echo /etc/rc.d/init.d/functions |grep -E "/.*" (现在先不做了)

vim进去是命令后输入i键盘就可以编辑模式输入修改,esc从编辑模式模式变成命令模式
shift+: 就是输入你要保存的内容

wq是保存退出
q没做修改退出
q!做了修改不保存强行退出
w+文件(另存为)

shell脚本编程基础

以上是关于第6天文本处理工具的主要内容,如果未能解决你的问题,请参考以下文章

100天精通Python(数据分析篇)——第73天:Pandas文本数据处理方法之查找替换拼接正则虚拟变量

100天精通Python(数据分析篇)——第73天:Pandas文本数据处理方法之查找替换拼接正则虚拟变量

100天精通Python(数据分析篇)——第71天:Pandas文本数据处理方法之str/object类型转换大小写转换文本对齐获取长度出现次数编码

100天精通Python(数据分析篇)——第71天:Pandas文本数据处理方法之str/object类型转换大小写转换文本对齐获取长度出现次数编码

2-6. 文本处理工具

6-1 文本处理工具和正则表达式