当前位置: 首页 > 编程日记 > 正文

ii第六单元 文本处理工具


linux中常用的基础命令
diff 命令
patch 命令
grep 命令
Cut 命令
sort 命令
uniq 命令
tr 命令
sed 命
1.diff 命令 比较两个文件的不同 用于创建补丁文件
diff -u file file.new >file.path  ##生成补丁文件
yum install patch -y         ##安装打补丁工具

(1)patch -b file file.path    ##给老文件件打补丁,并且对老文件进行备份
补丁版替换原始文件 , 但当指定 -b 选项时 , 可以制作备份。将用 .orig 文件名后缀
重命名原始文件
   17 vim file ##建立file
   18 vim file1##建立file1
   19 cat file  ##查看file
   20 cat file1 ##查看file
   21 diff file file1   ##比较两个文件的不同 
   22 diff -c file file1 ## -c 显示上下文周围的行
   23 diff -u file file1 ## -u 使用统一的输出格式
   24 diff -u file file1 > file.path ##创建补丁文件
   25 cat file.path    ##查看补丁文件
   26 yum install patch -y  ##安装打补丁工具
   27 patch file file.path ##给文件打补丁,文件在前,补丁文件在后
   28 cat file          ##查看文件 
   34 ls 
   40 vim file
   41 patch -b file file1 
   42 patch -b file file.path  ##给老文件件打补丁,并且对老文件进行备份
   43 ls
   44 cat file.orig 查看备份文件
   45 cat file 查看新文件
   46 history

wKiom1kJ_z_D6Fa_AACy--2bwlo588.png-wh_50

wKioL1kJ_z-wbB2aAADx_u_WvjE204.png-wh_50

wKioL1kJ_0DylUOrAABfprKXF7o127.png-wh_50

wKiom1kJ_0CCniXpAACZiP6HSWw121.png-wh_50



(2)patch 可用于将简单的补丁文件应用于使用以下语法的单个文件
– [root@host etc]# patch issue patchfile
Patching file issue

(3)以下命令显示如何使用通过 diff -Naur 创建的补丁文件。用户更改为
与从中创建补丁文件的原始目录相似的可比较目录后 , 将执行patch
– [user@host orig-dir]$ patch -b < /tmp/patchfile
Patching file hosts
Patching file network
2.grep命令 
grep 将显示文件中与模式匹配的行。
grep        -i              ##忽略大小写
        -v              ##反向过滤
        -E "关键字1|关键字2|....." ##过滤多个关键字



    1  cd/mnt/
    2 ls
    3 cp /etc/passwd  /mnt/ ##将/etc/passwd复制到/mnt
   22 vim passwd    ##编辑passwd文本
   23 cat passwd    ##查看passwd文本
   24 grep -i test passwd  ##显示文件中含有test的行,忽略test大小写
   25 grep test passwd  ##显示文件中含有test的行
   26 grep -i test passwd -v ##显示文件中不含有test的行,忽略test大小写
   27 grep -E "TEST|root" passwd ##显示文件中含有TEST或root"的行
   28 grep -E "test|root" passwd##显示文件中含有test或root的行
   29 grep -E "test|ROOT" passwd##显示文件中含有test或ROOT的行
   30 grep -E "^test|ROOT" passwd##显示文件中行首是test或含有ROOT的行
   31 grep -E "test|ROOT$" passwd##显示文件中含有test或行尾是ROOT的行
   32 grep -E -i "^test|ROOT" passwd
    ##显示文件中行首是test或含有ROOT的行,忽略大小写
   33 grep test passwd  | grep -i testpasswd -v
    ##显示文件中不含有test的行,忽略test大小写
   34 grep test passwd  | grep -E  "^test|root$" -v
   显示文件中行首不是test或不含有root的含有test的行
   35 grep test passwd  | grep -E  "^test|test$" -v
   显示文件中行首不是test或不含有test的含有test的行
   36 grep test passwd  | grep -E  "^root|root$" -v
   显示文件中行首不是root或不含有root的含有test的行

wKiom1kJ_33AujzyAAAlaiBrxXA090.png-wh_50

wKioL1kJ_37zWcp6AAEUZlxJ0vU387.png-wh_50

wKiom1kJ_3_DMV3eAADoef5Kves243.png-wh_50

wKiom1kJ_3-y2SbpAACpSS6rPtk618.png-wh_50



  grep -r 关键字 目录       ##在目录中过滤还有关键字的文件
       -n           ##显示结果所在行的行号
       -c           ##结果个数

wKiom1kJ_92g-Pb_AABuIQQeh2I217.png-wh_50wKioL1kJ_96wx5mjAADWPBAbSuY777.png-wh_50

练习

提取ifconfig eth0 中的ip地址

wKiom1kJ_9_A_ZhPAADl484kCWI104.png-wh_50

wKiom1kKAHHiDJVHAADLBLAOut4267.png-wh_50

3.cut 命令
##-d指定用于提取字段的分隔符
##-f 指定要从每行中提取的字段
##-c 指定要从每行中提取的文本列

    2 cd /mnt/  
    3 cp /etc/passwd .  
    4 vim passwd
    5 cat passwd
    6 cut -d : -f 1,7 passwd ##剪切每行中的1和7字段,并提取字段的分隔符
    -d : -f 一起用,不能分开
    7 cut -d : -f 1,3 passwd ##剪切每行中的1和3字段,并提取字段的分隔符
    8 cut -d : -f 1-3 passwd ##剪切每行中的1到3字段,并提取字段的分隔符
    9 cut -c  1-3 passwd ##剪切每行中的1到3列文本
 wKiom1kKAHKBNK-JAAC67YfkSCs316.png-wh_50

wKioL1kKAHKCMtYpAAB-17ZVAdU521.png-wh_50

3.sort 排序
        -n              ##纯数字
        -r              ##倒序
        -u              ##去掉重复行
        -t              ##指定分隔符
        -k              ##指定排序的列
4.uniq 
处理重复行
        -c              ##统计重复行的个数
        -u              ##显示唯一的行
        -d              ##显示重复行

    1 vim file
    2 sort -n file  ##纯数字排序
    3 sort -rn file  ##倒序
    4 sort -rnu file ##去掉重复行
    5 sort -rn file | uniq -c ##统计重复行的个数,倒序
    6 sort -rn file | uniq -u  ##显示唯一的行,倒序
    7 sort -rn file | uniq -d  ##显示重复行,倒序
   11 vim file
   12 cat file
   13 sort -t : -k 3 -n file ## 排序分隔符分的第三列
   14 sort -t : -k 3 -n file | uniq  -c##排序分隔符分的第三列,并统计重复行的个数
   15 sort -t : -k 1 -n file | uniq  -c##排序分隔符分的第1列,并统计重复行的个数
   17 sort -t : -k 2 file | uniq -c  ##排序分隔符分的第2列,并统计重复行的个数
   18 sort -t : -k 3 -n file | uniq -u##排序分隔符分的第三列,显示唯一的行
   19 sort -t : -k 3 -n file | uniq -d##排序分隔符分的第三列,显示重复行
wKiom1kKAHLgOzqmAABlJbIArR8861.png-wh_50

wKioL1kKAO2ATaVfAABTZqRgMs0302.png-wh_50

wKioL1kKAO6DE-qhAABPQP9zY6g430.png-wh_50

wKiom1kKAT6BPA4GAADMYDu6aAY832.png-wh_50

wKioL1kKAO-jVmweAADO7I2INUs819.png-wh_50

wKioL1kKAZKRWh02AAC0WMsPGbY774.png-wh_50


5.tr 转换字符大小写
    4 vim file 
    5 cat file
    6 tr 'a-z' 'A-Z' < file ##把file中所有小写字符转换成大写
    7 tr 'A-Z' 'a-z' < file ##把file中所有大写字符转换成小写

    8 history
wKiom1kKAZKQXCghAABkiT_ism8798.png-wh_50

6.sed   控制流输出
sed 命令是流编辑器
 , 用于对文本数据流执行编辑。假定要处理一个文件名 , sed 将对文件中的所有行执行搜索和替换 , 以将修改后的数据发送到标准输出 ; 即 , 其实际上并不修改现有文件。与 grep 一样 , sed 通常在管道中
    9 cat passwd
   10 cat passwd -b > westos ##将passwd中的内容输入到westos中 并且显示行数
   11 cat westos
   12  sed 's/nologin/westos/g' westos ##替换输出中的nologin为westos
   16 sed -e 's/nologin/westos/g' -e 's/sbin/lee/g' westos
        ##多条替换策略用-e连接 
   18 sed '1,3s/nologin/westos/g' westos 
       ##替换输出中1-3行的nologin为westos
   20 sed 3,7d westos  ##不显示文件中的3-7行 
   21 sed 3,7p westos  ##重复显示文件中的3-7行
   22 sed -n 3,7p westos ##只显示文件中的3-7行
   23 sed 3d westos   ##不显示文件中的第三行 
wKioL1kKAZOytfuBAADKTob8nig654.png-wh_50

wKioL1kKAi-iG9taAABmf6NyFrA675.png-wh_50

wKioL1kKAjDDgdSFAABkR0tgrQc662.png-wh_50

wKiom1kKAjDANuVVAABcyAt-WVc388.png-wh_50

wKiom1kKAjHAZorYAAFIfta13fI870.png-wh_50


将修改后的数据发送到标准输出 ; 其实际上并不修改现有文件。
   27 sed -e 's/nologin/westos/g' -e 's/sbin/lee/g' westos
       ##多条替换策略用-e连接 
   28 cat westos

wKioL1kKAjHg9pUlAAC7BxbRDlU489.png-wh_50

-i将输出导入westos, 修改现有文件
   30 sed -e 's/nologin/westos/g' -e 's/sbin/lee/g' -i westos
      ##多条替换策略用-e连接
   31 cat westos

wKioL1kKAjKjEh6IAABuovouLGA673.png-wh_50

sed -ne 3p -ne 7p westos ##只显示文件中的3,7行

wKiom1kKAjLh0WyXAABuvGTpxI0140.png-wh_50sed '/games/,/nobody/s/nologin/westos/g' passwd     ##替换输出中的games字符到nobody字符之间的nologin为westos 
[root@westos mnt]# cat rule                 ##规则文件内容
s/nologin/westos/g
s/sbin/lee/g
[root@westos mnt]# sed -f rule  file            ##使用规则文件更改输出   
     1  root:x:0:0:root:/root:/bin/bash
     2  bin:x:1:1:bin:/bin:/lee/westos
     3  daemon:x:2:2:daemon:/lee:/lee/westos
     4  adm:x:3:4:adm:/var/adm:/lee/westos










本文转自 如何何如  51CTO博客,原文链接:http://blog.51cto.com/12778805/1922056,如需转载请自行联系原作者

相关文章:

Powershell管理系列(十)邮件联系人及邮件用户的管理

鉴于有些用户不太熟悉邮件联系人、邮件用户的区别&#xff0c;博文首先介绍下用户邮箱、邮件联系人、邮件用户的概念&#xff0c;以下介绍部分博文摘自winos微软中文技术论坛。---------------------------------------------------------------------------------------------…

移植 thttpd Web服务器

从http://www.acme.com/software/thttpd/ 下载thttpd 到/tmp 目录当中&#xff0c;并解压. 编译thttpd [armlocalhost thttpd-2.25b]$ CCarm-linux-gcc ./configure --hostarm-linux [armlocalhost thttpd-2.25b]$ vi Makefile 指定静态链接二进制文件 LDFLAGS -static …

懂外语、会创作,机器高质量学习挑战均在这里实现

编译 | 禾木木 出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09; 近年来人工智能在不断的发展中&#xff0c;机器不仅已经学会了英语写作&#xff0c;也正在学习其它语言。 德国 Aleph Alpha 已经构建了世界上最强大的 AI 语言模型之一。它不仅能说流利的英语&#xf…

JPA 复杂查询 - Querydsl

添加依赖 <!--query dsl --> <dependency> <groupId>com.querydsl</groupId> <artifactId>querydsl-jpa</artifactId> </dependency> <dependency> <groupId>com.querydsl</groupId> <artifactId>qu…

服务器端开发经验总结 Linux C语言

简介在进行服务器端开发的时候需要考虑一些算法和性能问题&#xff0c;经过了几年的开发&#xff0c;对这方面有了一些经验&#xff0c;现在写下来跟大家分享和讨论。我主要是在Linux下进行C语言的开发&#xff0c;所以后面的实现都是基于Linux操作系统并用C语言来讲解。其它平…

Backbone.js学习笔记 Hello World!

使用Backbone.js 和 MVC 架构创建一个典型的Hello world项目。虽然是“杀鸡用牛刀了”&#xff0c;毕竟是我第一次使用Backbone.js 依赖 jQuery 1.9.1Undersore.js 1.5.0Backbone.js开始 <!doctype html> <html> <head> <meta charset"utf-8"&g…

一文速览机器学习的类别(Python代码)

作者&#xff1a;泳鱼来源&#xff1a;算法进阶机器学习按照学习数据经验的不同&#xff0c;即训练数据的标签信息的差异&#xff0c;可以分为&#xff1a;*监督学习&#xff08;supervised learning&#xff09;*非监督学习&#xff08;unsupervised learning&#xff09;*半监…

Linux下分割与合并文件的方法

Linux下分割与合并文件的方法 切割合并文件在linux下用split和cat就可以完成。下面举些实例进行说明。1.文件切割文件切割模式分为两种&#xff1a; 文本文件 二进制模式。 1.1文本模式 文本模式只适用于文本文件&#xff0c;用这种模式切割后的每个文件都是可读的。文本模式又…

将网站程序放在tmpfs下

将网站程序放在tmpfs下然后用nginx直接做对外服务呢varnish或者squid都是利用内存和它的连接数来做到加速服务.但是如果是squid->nginx->fastcgi->mysql这样当中很多连接是开销在内部的连接之中而且如果客户端请求php.squid还需要将请求再转发至nginx,然后nginx再转发…

docker 连接容器

1.通过端口映射 sudo docker run -d -P training/webapp python app.py 容器有一个内部网络和IP地址&#xff08;在使用Docker部分我们使用docker inspect命令显示容器的IP地址&#xff09; -P 标记创建一个容器&#xff0c;将容器的内部端口随机映射到主机的高端口49000到4990…

新进展!英伟达用 AI 给纪录片配音,情绪语调拿捏得稳稳地

编译 | 禾木木 出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09; AI 已经将合成语音从单调的机器人电话和传统 GPS 导航系统转变为智能手机和智能扬声器中动听的虚拟助手。 虽然日常和Siri、小爱或小度等对话时声音还是很机械&#xff0c;但最新的技术进展显示&#x…

揭开Annotation的面纱

Annotation是Java5、6只后的新特征&#xff08;中文称之为注解&#xff09;&#xff0c;并且越来越多的得到了应用&#xff0c;比如Spring、Hibernate3、Struts2、iBatis3、JPA、JUnit等等都得到了广泛应用&#xff0c;通过使用注解&#xff0c;代码的灵活性大大提高。这些都是…

使用Nginx的proxy_cache缓存功能取代Squid

[文章作者&#xff1a;张宴 本文版本&#xff1a;v1.2 最后修改&#xff1a;2009.01.12 转载请注明原文链接&#xff1a;http://blog.s135.com/nginx_cache/]  Nginx从0.7.48版本开始&#xff0c;支持了类似Squid的缓存功能。这个缓存是把URL及相关组合当作Key&#xff0c;用…

oracle grant 权限

grant connect,resource,dba to user;CONNECT角色&#xff1a; --是授予最终用户的典型权利&#xff0c;最基本的 CREATE SESSION --建立会话 RESOURCE角色&#xff1a; --是授予开发人员的 CREATE CLUSTER --建立聚簇 CREATE …

技术沙龙 | TeaTalk 带你深度探索 SDN 网络技术再创新

越来越多的企业、行业和政府机关顺应企业数字化转型、云服务和国家政策等趋势将业务迁移上云。随着移动云的快速发展&#xff0c;对网络提供差异化的服务能力也提出了很多新的考验。大规模数据中心、虚拟化 SDN 网络技术及超融合软硬一体可编程设备在云网络的应用已成为行业发展…

利用windows 2003实现服务器群集的搭建与架设(一) NLB群集的创建与架设

实验场景&#xff1a;西安凌云系统高科技有限公司利用IIS搭建了一个WEB站点&#xff0c;域名为nlb.angeldevil.com。由于业务的逐渐增加&#xff0c;网站速度也越来越慢&#xff0c;而且经常出现故障&#xff0c;为公司的利益带来了很多的不便&#xff1b;公司决定使用两台WEB站…

nginx 反向代理,动静态请求分离,proxy_cache缓存及缓存清除

一&#xff0c;nginx反向代理配置 #tomcat 显然就是用户访问www.wolfdream.com(需要设置本地localhost&#xff0c;将www.wolfdream.com指向nginx所在IP)的时候(或将www.wolfdream.com直接写在nginx所在的IP地址)&#xff0c;将请求转到到后台的tomcat服务器&#xff0c;即127.…

深度强化学习的前景:帮助机器掌控复杂性

作者&#xff1a;数据实战派 来源&#xff1a;数据实战派深度强化学习&#xff0c;即机器通过测试其行为后果来学习的方法&#xff0c;是人工智能最有前途和影响力的领域之一。它将深度神经网络与强化学习结合在一起&#xff0c;可以通过训练实现多个步骤的目标。它是自动驾驶汽…

成绩转换(15)

#include<stdio.h> int main() {int n;char ch;while(scanf("%d",&n)!EOF){if(n>100||n<0) continue;if(n>90) chA;else if(n>80) chB;else if(n>70) chC;else if(n>60) chD;else chE;printf("%c\n",ch);} }转载于:https://ww…

pangolin最新版 v2.5.2.975

Pangolin是一款帮助渗透测试人员进行Sql注入测试的安全工具。 所谓的SQL注入测试就是通过利用目标网站的某个页面缺少对用户传递参数控制或者控制的不够好的情况下出现的漏洞&#xff0c;从而达到获取、修改、删除数据&#xff0c;甚至控制数据库服务器、Web服务器的目的的测试…

nginx 的proxy_cache才是王道

nginx 的proxy_cache才是性价比最高的缓存,我目前的配置是LiteSpeednginx,可以参考apachenginx将动态内容交给LiteSpeed或apache来处理,然后利用proxy_cache反向代理全部缓存在硬盘,变成静态内容,大家都知道nginx跑静态内容是有多厉害了吧,所以这样就可以小内存跑大PV.但是这样…

Android 占位符 %1$s %1$d

1、整型&#xff0c;比如“我今年23岁了”&#xff0c;这个23是整型的。在string.xml中可以这样写&#xff0c;<string name"old">我今年%1$d岁了</string> 在程序中&#xff0c;使用 [java] view plaincopy String sAgeFormat getResources().getStrin…

谁说技术男不适合养猫!90后程序员2天做出猫咪情绪识别软件

整理 | 王晓曼出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;9月1日&#xff0c;一则关于#程序员2天做出猫咪情绪识别软件#的话题登上微博热搜&#xff0c;参与阅读的人数达到了8218.1万&#xff0c;讨论次数1.3万&#xff0c;引发网友们的热议。高手在民间&#…

符合RESTful的接口规范

把api放在专属域名下&#xff0c;要带版本号 api的url中应该只有名词&#xff0c;和数据库的表或文档资源相对应&#xff1b;对资源&#xff08;collection&#xff09;的具体操作类型则由http方法动词表示 &#xff08;安全性&#xff1a;不改变资源状态&#xff0c;类似只读&…

Nginx proxy_cache 使用示例

原文出处&#xff1a;http://blog.chenlb.com/2010/04/nginx-proxy-cache.html 动态网站使用缓存是很有必要的。前段时间使用了 nginx proxy_stroe 来保存静态页面&#xff0c;以达到缓存的目的。当然 proxy stroe 用来做缓存是不够好的方案。 缓存这一块当然还有 squid 之类的…

Lync 小技巧-49-Lync 自动备份-批量管理-用户(免费视频)

自从2010年开始&#xff0c;自从Lync Server 2010开始&#xff0c;我都在研究Lync 自动备份和批量管理用户&#xff0c;当年都做成功&#xff0c;做标准过&#xff0e;不过都是图片&#xff0c;未写博客&#xff0c;为什么呢?有可能你有这样那样的假设&#xff0c;但是今天可以…

数学很差的人能当程序员吗?

【CSDN 编者按】作者在大学时代受《程序员》杂志的启发&#xff0c;从数学专业投身计算机编程&#xff0c;毕业后进入软件开发行业。过去9年&#xff0c;他去过大厂敲代码&#xff0c;也曾在创业公司带过团队&#xff0c;一直从事“下一代”软件技术的研发&#xff0c;对于网上…

Nginx 学习笔记(六)引入线程池 性能提升9倍

原文地址&#xff1a;https://www.cnblogs.com/shitoufengkuang/p/4910333.html 一、前言 1、Nignx版本&#xff1a;1.7.11 以上 2、NGINX采用了异步、事件驱动的方法来处理连接。这种处理方式无需&#xff08;像使用传统架构的服务器一样&#xff09;为每个请求创建额外的专用…

Nginx源代码分析 - 日志处理

我看Nginx源代码的时候&#xff0c;感觉整个系统都在传递log指针。log在nginx里是比较关键的。日志和内存分配是最基础的两个起点代码&#xff0c;最好是在自己写的程序框架中早点完善并实现。以免未来要用大量的精力调整。1. 日志的源代码位置日志的源代码在src/code/ngx_log.…

strom.yaml配置

2019独角兽企业重金招聘Python工程师标准>>> 配置storm.yaml storm发行版在conf/storm.yaml包含了一些配置信息。你可以在这里看到默认配置。storm.yaml里面的配置比default.xml的优先级要高&#xff0c; 下面是要运行storm集群所必须的配置: 1. storm.zookeeper.se…