八、文本处理工具

这篇具有很好参考价值的文章主要介绍了八、文本处理工具。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

文本提取工具(查看文本)

文本分析工具

文本操作工具

1、文本提取工具
  1. cat、more、less查看文本内容

  • cat:打印一个或多个文件到标准输出

 1 #合并文件
 2 [root@example tmp]# cat file1.txt file2.txt > file3.txt
 3 
 4 #查看文件行号
 5 [root@example tmp]# cat -n /tmp/passwd | grep 12
 6 
 7 #查看文件中是否存在特殊字符
 8 [root@example tmp]# cat -A test.txt 
 9 #!/bin/bash$
10 cat >> err.txt <<EOF$
11 hostname:example.com$
12 cpu:2h$
13 mem:4096M$
14 ip:192.168.200.154.111$
15 EOF$
  • more:浏览文件内容,每次只看一页

  • less:浏览文件内容,每次只看一页

    • -/text:搜索text

    • -n/N:跳转到next/previous匹配的地方

    • -v:用文本编辑器打开该文件

    • man命令中是采用less来分页的

  1. head、tail过滤文本内容

  • head:显示文件的起始10行

    • 使用 -n选项指定显示的行

  • tail:显示文件最后10行

    • 使用-n选项指定显示的行

    • 使用-f选项将文件末尾追加的内容显示在当前终端

      • 对于监控日志文件非常有用

    如果需要在指定文本中取出内容(以行取)

    • 先用head取出最大行

    • 然后用 tail 减掉所需行数

  1. grep 文本过滤工具

    • -o:显示所有关键字

    • -i:忽略大小写

    • -n:显示行号

    • -c:显示行数

    • -v:显示不匹配的行(取反)

    • -q:静默模式,没有任何输出,得用 $? 来判断执行是否成功,即有没有过滤到想要的内容

    • -AX:将匹配行及其后X行一起显示

    • -BX:将匹配行及其前X行一起显示

    • -CX:将匹配行及其前后X行一起显示

    • -r:递归搜索目录,根据文本内容搜索文件

    • -l:如果匹配成功,则只将文件名打印出来,失败则不打印,通常 -rl 一起用;例如:grep -rl ‘root’ /etc

    • –color=auto:用color颜色高亮显示匹配的数据

 1 #过滤关键字
 2 [root@example tmp]# grep root passwd 
 3 root:x:0:0:root:/root:/bin/bash
 4 operator:x:11:0:operator:/root:/sbin/nologin
 5 
 6 #显示所有关键字
 7 [root@example tmp]# grep -o root passwd 
 8 root
 9 root
10 root
11 root
12 
13 #忽略大小写
14 [root@example tmp]# grep -i root passwd 
15 root:x:0:0:root:/root:/bin/bash
16 operator:x:11:0:operator:/root:/sbin/nologin
17 
18 #显示行号
19 [root@example tmp]# grep -n root passwd 
20 1:root:x:0:0:root:/root:/bin/bash
21 10:operator:x:11:0:operator:/root:/sbin/nologin
22 
23 #取反
24 [root@example tmp]# grep -v root passwd 
25 bin:x:1:1:bin:/bin:/sbin/nologin
26 
27 #0表示上一条命令执行成功
28 [root@example tmp]# grep -q root passwd 
29 [root@example tmp]# echo $?
30 0
31 #1表示上一条命令执行失败
32 [root@example tmp]# echo $?
33 1
34 
35 [root@example var]# grep -A4 ftp passwd
36 [root@example var]# grep -B4 ftp passwd
37 [root@example var]# grep -C4 ftp passwd
38 
39 [root@example var]# grep -rl passwd /etc
40 /etc/nsswitch.conf.bak
41 /etc/login.defs
42 /etc/security/pwquality.conf
43 
44 [root@example var]# alias 
45 alias cp='cp -i'
46 alias egrep='egrep --color=auto'
47 alias fgrep='fgrep --color=auto'
48 #取消高亮
49 [root@example var]# unalias grep
50 #打开高亮
51 [root@example var]# alias grep='grep --color=auto'
52 [root@example var]# source /etc/profile

    4. 正则表达式

又称标准正则表达式,是最早的正则表达式规范,仅支持最基本的元子符集。基本正则表达式是POSIX规范制定的两种正则表达式语法标准之一,另外一种语法标准称为扩展正则表达式。

1 [root@example var]# grep bash$ /etc/passwd
2 root:x:0:0:root:/root:/bin/bash
3 user:x:1000:1000:user:/home/user:/bin/bash
4 zhangsan:x:1005:1006::/home/zhangsan:/bin/bash
字符 含义
^ 在每行的开始进行匹配
$ 在每行的末尾进行匹配
\ < 在字的开始进行匹配
\ > 在字的末尾进行匹配
. 对任何单个字符进行匹配
[str] 对str中的任何单个字符进行匹配
[^str] 对任何不在str中的 单个字符进行匹配
[a-b] 对a到b之间的任何字符进行匹配
\ 转义字符,抑制后面的一个字符的特殊含义
* 对前一项(item)进行0次或多次重复匹配

grep使用扩展的正则需要使用egrep或者是grep -E

 1 [root@example etc]# egrep roo passwd
 2 root:x:0:0:root:/root:/bin/bash
 3 operator:x:11:0:operator:/root:/sbin/nologin
 4 [root@example etc]# grep -E roo+ passwd
 5 root:x:0:0:root:/root:/bin/bash
 6 operator:x:11:0:operator:/root:/sbin/nologin
 7 [root@example etc]# grep -E 'bash|user' passwd
 8 root:x:0:0:root:/root:/bin/bash
 9 qemu:x:107:107:qemu user:/:/sbin/nologin
10 [root@example etc]# grep  -E '(roo?)' passwd
11 root:x:0:0:root:/root:/bin/bash
12 operator:x:11:0:operator:/root:/sbin/nologin
13 
14 [root@example etc]# ifconfig | grep -Eo '([0-9]{,3}\.){3}1{1}..'
15 192.168.200.154
16 127.0.0.1  
17 192.168.122.1  
18 
19 [root@example etc]# ifconfig | grep -Eo '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}'|grep -v 255
20 192.168.200.154
21 127.0.0.1
22 192.168.122.1
23 
24 [root@example etc]# ifconfig | grep -w inet | cut -d " " -f10
25 192.168.200.154
26 127.0.0.1
27 192.168.122.1
  1. cut - 提取列或字段

  • 显示文件指定的列或者标准输入数据

    • cut -d: -f1 /etc/passwd; cut -d : -f1,3 passwd

    • grep root /etc/passwd | cut -d:-f7

  • -d:来指定列分隔符

  • -f: 来指定要打印的列

  • -c:指定按字符提取

    • cut -c 2-5 /usr/share/dict/words

  1. awk 以空作为默认的分隔符

  • awk -F 分隔符 ’{print $列}‘ 文件

1 [root@example ~]# ifconfig | grep -w inet | awk -F " " '{print $2}' 
2 [root@example ~]# awk -F : '{print $1,$3}' /etc/passwd
3 [root@example ~]# ifconfig | grep -w inet | cut -d " " -f10
4 [root@example ~]# ifconfig | grep -w inet | cut -d " " -f10 | cut -d . -f4 | cut -c 1-2
5 [root@example ~]# cut -c 1-4 /etc/passwd 
2、文本分析工具
    1. 文本统计:wc

 1 [root@example tmp]# wc passwd 
 2   48  107 2636 passwd
 3 第一列是文件的行数
 4 第二列是文件的单词数
 5 第三列是文件的字节数
 6 [root@example tmp]# wc -l passwd 
 7 48 passwd
 8 [root@example tmp]# wc -w passwd 
 9 107 passwd
10 [root@example tmp]# wc -c passwd 
11 2636 passwd
12 [root@example tmp]# wc -wc passwd 
13  107 2636 passwd
  1. 文本排序:sort

sort默认按照字符表的顺序排序,不是按照单词或者数字的方式排序

  • -n:以数字的方式进行排正序

  • -r:排倒序

  • -k:指定列

  • -t:指定分隔符

  • -u:去重

  • -f:忽略大小写

1 以数字进行排序 -n
2 [root@example tmp]# sort -t : -k 3 -n passwd 
3 以数字进行倒序 -r
4 [root@example tmp]# sort -t : -k 3 -r -n passwd 
  1. 文本比较:diff

比较文本差异,可以使用图像化工具vimdiff

1 [root@example tmp]# diff /etc/passwd /tmp/passwd 
2 47a48
3 > user2:x:1002:1002::/home/user2:/bin/bash
4 [root@example tmp]# vimdiff /etc/passwd /tmp/passwd 
5 2 files to edit
3、文本操作工具
  1. 文本转换工具:tr

1 [root@example tmp]# tr a-z 1-2 < passwd 
2 2222:2:0:0:2222:/2222:/222/2122
  1. 流编辑器:sed

用来进行文本的操作;查找、替换、删除、新增

  • 地址定界:指的是要操作的行

    • #:为数字,指定要进行处理操作的行

    • $_:表示最后一行,多个文件进行操作的时候,为最后一个文件的最后一行

    • /regexp/:表示能够被regexp匹配到的行,regexp及基于正则表达式的匹配

    • /regexp/l:匹配时忽略大小写

    • \%regexp%:任何能够被regexp匹配到的行,换用%(用其它字符也可以,如:#)为边界符号,当内容出现 \ 时使用

    • addr1,addr2:指定范围内的所有的行(范围选定)常用地址界表示方式

      • 0,/regexp/:从起始行开始到第一次能够被regexp匹配到的行

      • /regexp/,/regexp/:被模式匹配到的行内地的所有的行

    • first~step:指定起始的位置及步长,例如:1 ~ 2表示1,3,5…

    • addr1,+N:指定行以及以后的N行

    • addr1,~N:指定行开始的N行

 1 [root@example tmp]# sed -n 1p passwd 
 2 root:x:0:0:root:/root:/bin/bash
 3 [root@example tmp]# sed -n 10,12p passwd 
 4 operator:x:11:0:operator:/root:/sbin/nologin
 5 games:x:12:100:games:/usr/games:/sbin/nologin
 6 ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
 7 [root@example ~]# sed -n '/^root/p' /etc/passwd
 8 root:x:0:0:root:/root:/bin/bash
 9 [root@example ~]# sed -n '$p' /etc/passwd
10 zhangsan:x:1001:1001::/home/zhangsan:/bin/bash

地址定界的操作

  • p:打印模式空间的内容

  • d:删除匹配到的内容

  • -i:将操作保存到文件

  • a\text:append,表示在匹配到的行之后追加内容

  • i\text:insert,表示在匹配到的行之前追加内容

  • c\text:change,表示把匹配到的行和给定的文本进行交换

  • s/regexp/replacement/flages:查找替换,把text替换为 regexp 匹配到的内容(其中/可以用其它字符代替,例如@)

  • 其它编辑命令

    • g:全局替换,默认只替换第一个

    • i:不区分大小写

    • p:如果成功替换则打印

  • w /path/to/somefile:将匹配到的文件另存到指定的文件中

1 [root@example ~]# sed '1d' /etc/passwd
2 [root@example ~]# sed -i '1d' /etc/passwd
3 [root@example ~]# sed '/ftp/i\text' /tmp/passwd 
4 [root@example ~]# sed '/ftp/a\text' /tmp/passwd 
5 [root@example ~]# sed '/ftp/c\text' /tmp/passwd 
6 [root@example ~]# sed -n 's/ftp/http/p' /tmp/passwd 
7 http:x:14:50:FTP User:/var/ftp:/sbin/nologin
8 [root@example ~]# sed  '46,48 s/ftp/http/gip' /tmp/passwd 
9 [root@example ~]# sed '/root/ w /tmp/zhangsan.txt' /tmp/passwd 

注意事项:

  • 如果没有指定地址,表示命令将应用于每一行

  • 如果只有一个地址,表示命令将应用于这个地址匹配的所有行

  • 如果指定了由逗号分隔的两个地址,表示命令应用于匹配第一个地址和第二地址之间的行(包括这两行)

  • 如果地址后面跟有感叹号,表示命令将应用于不匹配该地址的所有行

 文章来源地址https://www.toymoban.com/news/detail-759954.html

到了这里,关于八、文本处理工具的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python自动处理pptx:新建、另存、添加幻灯片、添加标题、插入文本图片图形、提取文本

    Python-pptx库是一个用于创建、更新和读取Microsoft PowerPoint .pptx 文件的Python库。它允许我们使用Python脚本自动化PowerPoint文件的创建、更新和读取操作,是一个非常方便自动化处理PPTX的工具。 https://python-pptx.readthedocs.io/en/latest/index.html

    2024年02月08日
    浏览(54)
  • 文本分析-使用jieba库实现TF-IDF算法提取关键词

    🤵‍♂️ 个人主页:@艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞👍🏻 收藏 📂加关注+         TF-IDF(Term Frequency-Inverse Document Frequency, 词频-逆文件频率)是一种用于资讯检索与资

    2024年02月11日
    浏览(49)
  • WX Backup - 免费微信聊天记录备份导出与查看工具 (可提取图片/视频/语音)

    微信绝对是一个让人爱恨交织的 APP,它在国内几乎完全占据了人们的社交以及生活的方方面面,但腾讯却并没有为微信提供好用的「 聊天记录 」备份导出和查看的功能。 WX Backup 是一款完全免费的 微信聊天记录备份导出工具 ,支持 Windows 和 Mac,它能将你的微信聊天记录导

    2024年02月09日
    浏览(59)
  • 文本预处理——文本数据分析

    2024年02月15日
    浏览(43)
  • 八、文本处理工具

    文本提取工具(查看文本) 文本分析工具 文本操作工具 1、文本提取工具 cat、more、less查看文本内容 cat:打印一个或多个文件到标准输出 more:浏览文件内容,每次只看一页 less:浏览文件内容,每次只看一页 -/text:搜索text -n/N:跳转到next/previous匹配的地方 -v:用文本编辑

    2024年02月04日
    浏览(34)
  • shell脚本文本处理工具

    声明: 以下内容为个人笔记,内容不完全正确,请谨慎参考。 cut: cut 工作是“剪”,具体来说就是在文件中负责剪切数据。cut 命令从文件的每个行剪切字节、字符和字段输出。 1、基本语法: cut [选项参数] filename 说明:默认分隔符是副表符 2、选项参数说明 选项参数:1)

    2024年04月25日
    浏览(29)
  • 图片坐标提取软件/图片坐标点和像素点颜色提取软件/图片坐标获取工具/Python图片坐标获取源码/图片像素坐标获取软件/查看图片点XY坐标(完全开源)

    该软件使用python写的,可以提取像素点的坐标还有也能获取像素点的16进制数据RGB565和RGB888(RGB888仅最新的源码才支持),可以单点坐标也可以按键坐标,甚至可以使用简单的左右键配合使用,自动复制到粘贴板,如果图片太大或者太小,也支持图片缩小放大,但是软件会对像素

    2024年02月15日
    浏览(45)
  • 脑电信号处理与特征提取——5.频谱分析和时频分析(张治国)

    目录 五、频谱分析和时频分析 5.1 频谱估计 5.1.1 基本概念 5.1.2 频谱估计方法:周期图 5.1.3 频谱估计方法:Welch法 5.1.4 频谱估计方法的比较 5.1.5 频谱特征提取  5.2 时频分析 5.2.1 短时傅里叶变换 5.2.2 连续小波变换 5.3 事件相关同步化/去同步化 静息态脑电: 没有刺激的情况下

    2024年02月15日
    浏览(42)
  • Elasticsearch的文本分析和处理

    Elasticsearch是一个基于分布式搜索和分析的开源搜索引擎。它可以处理大量数据并提供实时搜索功能。文本分析和处理是Elasticsearch中的一个重要功能,它可以帮助我们更好地处理和分析文本数据。 在本文中,我们将深入探讨Elasticsearch的文本分析和处理,包括其核心概念、算法

    2024年02月22日
    浏览(29)
  • 第八篇【传奇开心果系列】Python自动化办公库技术点案例示例:深度解读使用Python库清洗处理从PDF文件提取的文本

    在使用pyPDF4或任何其他Python的PDF解析库提取PDF文件的文本后,进行清洗处理是非常重要的。这是因为PDF文件通常包含了各种格式化元素,如页眉、页脚、页码、图表、图片等,这些元素可能会干扰到你提取的文本内容。清洗处理的目标是去除这些干扰元素,仅提取出你真正需

    2024年03月22日
    浏览(61)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包