1:grep//显示行

# grep 'main' /home/myhome/a.c//将a.c含有main的行显示出来

# grep -v 'main' /home/myhome/a.c //显示除了main那行的所有行

# grep -n 'the' a.c//显示a.c含有the的行

# grep -vn 'the' a.c//显示没有the的行

# grep -in 'the' a.c//不考虑大小写

# grep -n t[ae]st a.c//[]只算一个字符,搜到含有test和tast的行

# grep -n '[^g]st' a.c//显示st的行但是st前临近不能有g

# grep -n [^a-g]st a.c//st前临近不能有小写

# grep -n '^the' a.c //只查找首字符为the的行

# grep -n '^[a-z]' a.c//开头是小写字母的行

# grep -n '^[^a-zA-Z]' a.c //不是英文字母开头的行,^在[]内表反选在外表定位在行首

# grep -n '\.$' a.c //.为特俗含义,用转义字符\,查找最后是.的行。没有$将找有点的行

# grep -n '^$' a.c //空白行,只有首行和尾行

# grep -n 't..t' a.c //..表任意字符,如test,tast等

# grep -n '0*' a.c //0或空格,所以会把所有数据都显示

# grep -n '00*' a.c //所以含有0的行

# grep -n '000*' a.c至少含义两个0的行

# grep -n 't*t' a.c//所以含t的行,t*表示空格

# grep -n 't.*t' a.c//必须含有两个t

# grep -n 'o\{2\}' a.c//{}范围字符,特俗字符用转义字符\去掉特殊性,至少有两个o

# grep -n '^#' a.c //搜索以#开头的行

# grep -n 'd$' a.c //尾行为d

# egrep -n 'go+d' a.c //扩展,一个以上o

# egrep -n 'go?d' a.c//o?空的或一个o

# egrep -n 'good|goood' a.c //两个或三个o

# nl my_printf.sh | sed '2,5d'//nl打印并删除2到5行

2:sed的使用

# sed -n '3,5'p my_printf.sh //打印3~5行

# sed -n '1,$'p my_printf.sh //打印所有行

# grep -n '.*' my_printf.sh | sed -n '3'p//打印第三行并显示行号

# sed -n '/Tom/'p my_printf.sh //打印含有Tom字符串的行,用//

# sed -n '/^I/'p my_printf.sh //打印I 开头的行

# sed -n '/!$/'p my_printf.sh //打印!结尾的行

# sed -e '1'p -e '/T/'p -n my_printf.sh //e相当于传送带,先打印前面再打印后面

# sed '1'd my_printf.sh //删除第一行

# sed '/yes/'d my_printf.sh 删除含有yes的行

# sed '2s/Name/MyName/g' my_printf.sh//替换第二行的Name为MyName,g是全局,没有只替换第一个

# sed 's/s/MyName/g' my_printf.sh //不加行数默认替换所有行

# sed '1,4s/s/MyName/g' my_printf.sh //替换1~4行

# sed 's/[0-9]//g' my_printf.sh//删除所有的数字

# sed 's/[a-z]/\u&/g' my_printf.sh //小写字母全部替换为大写字母

# sed 's/[A-Z]/\l&/g' my_printf.sh //大写字母替换成小写

# sed -n '3s/[A-Z]/\l&/g'p  my_printf.sh //大写替换小写并打印第三行

# sed -r 's/(am)(.*)(old)/\3\2\1/' my_printf.sh //将am和old的位置交换,-r表不用脱义\,()表分段

-n  :只有经过sed处理的才显示

S   :搜索或替换

P   :打印

-e  :直接在命令行进行sed操作

-r  :拓展正则表达式

a   :增加

c   :替换

d   :删除

3:awk的使用

$0 :~# awk '{print $0}' demo.txt  //打印所有

$NF :# awk '{print $NF}' demo.txt  //打印每行最后一个字段

$1 :~# awk '{print $1}' demo.txt  //打印第一个字段

$2 :~# awk '{print $2}' demo.txt // 打印第二个字段

:~# awk '{print $(NF-1),"OK"}' demo.txt//打印倒数第二行并输出OK

:~# awk '{print NR,$0}' demo.txt //打印行号

ENVIRON :~# awk '{print ENVIRON["USER"];}' demo.txt  //打印路径

BEGIN ::~# awk 'BEGIN{print ENVIRON["PATH"];}' //执行行前可以输入的数据

# last -n 5 | awk '{print $1}' //打印前五个用户信息的第一个字段

# cat /etc/passwd | awk -F ':' '{print $1}' //-F制定域分隔符为:

# cat /etc/passwd | awk -F ':' '{print $1"\t" $7}' //\t表间隔,账户与shell是与Tab分开

# awk -F: '/root/' /etc/passwd //匹配了pettem(root)才执行action(没指定则输出行内容)

# awk -F: '/root/{print $7}' /etc/passwd //含有root的行并打印对应的shel

# awk -F ':' '{print "文件名:" FILENAME ",行号:" NR ",行数:" NF ",内容:" $0}' /etc/passwd

# awk -F ':' '{printf("文件名:%10s,行号:%s,行数:%s,内容:%s\n",FILENAME,NR,NF,$0)}'

/etc/passwd

4:diff 差异比较

Linux中Diff命令的功能为逐行比较两个文本文件,列出其不同之处。它对给出的文件进行系统的检查,并显示出两个文件中所有不同的行,不要求事先对文件进行排序。通过比较使得旧文件和新文件一样得做什么!

# cat f1.txt

hello

world

# cat f2.txt

hello

world_my

good

# diff f1.txt f2.txt

2c2,3

< world //旧文件应该减少的内容

---//分隔符

> world_my //旧文件应该增加的内容

> good

;>要添加一行旧文件才和新文件一样

;f1.txt旧文件内容,f2.txt新文件内容

;“<”表示后面文件比前面文件少了1行内容,对应旧文件
;“>”表示后面文件比前面文件多了1行内容,对应新文件

# diff -u f1.txt f2.txt //合并比较

--- f1.txt 2015-11-26 22:27:06.589702164 +0800

+++ f2.txt 2015-11-26 22:25:47.356186772 +0800

@@ -1,2 +1,3 @@

hello

-world

+world_my

+good

生成补丁文件patch

# diff -u f1.txt f2.txt >f1-f2.patch

# cat f1-f2.patch

--- f1.txt 2015-11-26 22:27:06.589702164 +0800

+++ f2.txt 2015-11-26 22:25:47.356186772 +0800

@@ -1,2 +1,3 @@

hello

-world

+world_my

+good

目录比较

//test1的a.txt多了cc;test1没有f1.txt,f2有f1.txt

# diff -uNr test1 test2

diff -uNr test1/a.txt test2/a.txt

--- test1/a.txt 2015-11-26 22:52:47.243168226 +0800

+++ test2/a.txt 2015-11-26 22:48:14.669955070 +0800

@@ -1,3 +1,2 @@

aa

bb

-cc

diff -uNr test1/f1.txt test2/f1.txt

--- test1/f1.txt 1970-01-01 08:00:00.000000000 +0800

+++ test2/f1.txt 2015-11-26 22:50:13.508227936 +0800

@@ -0,0 +1,2 @@

+hello

+world

打补丁

# patch f1.txt <f1-f2.patch //当前目录

撤销补丁:# patch -R f1.txt <f1-f2.patch

目录打补丁:把生成的补丁文件放到要打补丁的旧文件目录,

然后:# patch -p1 < test1-to-test2.patch

;-p1表示取消一级目录

linux grep,sed,awk和diff的使用的更多相关文章

  1. linux grep sed awk

    $ grep ‘test’ d* 显示所有以d开头的文件中包含 test的行. $ grep ‘test’ aa bb cc 显示在aa,bb,cc文件中匹配test的行. $ grep ‘[a-z] ...

  2. Linux三剑客grep/sed/awk

    grep/sed/awk被称为linux的“三剑客” grep更适合单纯的查找或匹配文本: sed更适合编辑匹配到的文本: awk更适合格式化文本,对文本进行较复杂各式处理: Grep --color ...

  3. linux三剑客grep|sed|awk实践

    最好先学习正则表达式的基本用法,以及正则表达式BREs,EREs,PREs的区别 此坑待填 grep sed awk

  4. 【Linux】 字符串和文本处理工具 grep & sed & awk

    Linux字符串&文本处理工具 因为用linux的时候主要用到的还是字符交互界面,所以对字符串的处理变得十分重要.这篇介绍三个常用的字符串处理工具,包括grep,sed和awk ■ grep ...

  5. [svc]linux正则实战(grep/sed/awk)

    企业实战: 过滤ip 过滤出第二行的 192.168.2.11. eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 ine ...

  6. linux 三大利器 grep sed awk 正则表达式

    正则表达式目标 正则表达式单字符: 特定字符 范围字符:单个字符[ ] :代表查找单个字符,括号内为字符范围 数字字符:[0-9],[259] 查找 0~9 和 2.5 .9 中的任意一个字符 小写字 ...

  7. grep sed awk 3个Linux中对文件内容操作的命令

    在学习Linux命令中,发现3个有关于文件内容操作的命令grep,sed和awk,在这里简单汇总这3个命令主要作用,在实际中找到最合适的情景应用,详细用法可以参考其他文章. 1.grep命令 主要作用 ...

  8. Linux基础命令-Nginx-正则表达式( grep sed awk )-Shell Script--etc

    Linux基础使用 学习内容博客 内存 查看swap分区信息 > swapon -s 添加swap分区 > mkswap /dev/sdb2 > 激活 swapon -a /dev/ ...

  9. Using of grep sed awk on Linux

    #This script is to parse data file: fun0() { ## [INFO1]a=1   b=2 c=3 [INFO2]a=7 b=8 c=9 [INFO3] a=x ...

随机推荐

  1. Android6.0中的权限

    Android6.0相比之前的Android版本有一个很大的不同点,就是动态的获取权限.之前我们需要什么权限只需要在Manifest文件中声明即可,在6.0中,又新增了运行时权限的动态检测. Andr ...

  2. XSLT函数集合:数值函数、字符串函、节点集函数和布尔函数

    任何的编程语言或者是SQL语句都有内置的函数或方法,而强大灵活的xslt技术也是如此.熟练掌握XSLT的常用函数的用法,XSLT的应用将变得如此轻松,你会发现XSLT比想象中还要牛!以下是xslt数值 ...

  3. android学习之RadioButton和CheckBox

    移通152 余继彪 RadioBuuton是一个单选按钮,CheckBox是一个复选按钮 . RadioButton的使用 ,首先要将RadioButton放在RadioGroup中,RadioGro ...

  4. linux配置网卡绑定

    1.确定好要绑定的那两个网口 我这边要绑定的是两个业务口  em2.em3 2.配置ifcfg-bond0.em2.em3 3.修改配置文件/etc/modprcode.d/disk.conf 底部添 ...

  5. mysql启动报错The server quit without updating PID file

    现网mysql无法启动是很让人头疼的,数据很有可能恢复不了,解决方法如下: 查看mysql目录下的日志,根据日志来锁定错误原因(mysql的错误日志很抽象) a.如果日志不能提供任何帮助则可进行以下步 ...

  6. JS 跑马灯

    利用jquery 来实现图片切换.文字转换移动的工具. MSClass 连接 http://www.popub.net/script/MSClass.html Mark 用

  7. Bpmx实施经验

    Bpmx是一个较大的平台,直接发布的话会有内存问题,经查阅一些资料,java1.5没有解决好之前版本的历史问题,所以在垃圾处理gc上有很多配置需要手动完成,之后的版本同上. Bpmx平台自带的文档中部 ...

  8. sql转db,后台坑货

    打开 创建一个db文件然后点击文件--新建---Sqlite 导入空db成功后点击左侧栏 点击表 点击右上角+号把sql文件的语句复制粘贴到 然后点击运行,运行完成后保存ok

  9. 《嫌疑人X的献身》书评

    <嫌疑人X的献身>是日本著名推理小说作家东野圭吾的代表作之一.1985年东野圭吾以一本<放学后>出道,出道初期善于写精巧细致的本格推理,后期文笔愈发老辣.简练.2005年东野圭 ...

  10. 云计算 云服务 hadoop

    云:是一种虚拟化的技术,重在资源管理. 云服务是云计算的一种商业模式,有三个层次: Iaas:场外服务器,存储和网络硬件:节省了维护成本和办公场地,公司可以在任何时候利用这些硬件来运行其应用 Paas ...