sed参考

#打印2-4行

[root@localhost ~]# sed -n '2,4p' test

[root@localhost ~]# awk 'NR==2,NR==4{print}' test

打印单行

[root@localhost ~]# sed -n '4'p test

[root@localhost ~]# awk 'NR==4{print}' test

#打印关键字行

[root@localhost ~]# grep 'zx' test

[root@localhost ~]# sed -n '/zz/p' test  #别忘了-n

[root@localhost ~]# awk '/zz/{print}' test

打印关键字所在的行号

awk '/zz/{print NR}' test

sed -n '/hello/=' file

打印文件一共多少行

awk END'{print NR}' file

awk '{print NR}' file|tail -n1

[root@localhost ~]# echo -e "1@2@3" |awk 'BEGIN{RS="@"}{print $0}'     
1
2
3

[root@localhost ~]# echo -e "1@2@3" |awk 'BEGIN{RS="@"}{print $0,RT}'  #以RS切割
1 @
2 @
3

RS是某个固定的值时,RT就是RS的内容。

[root@localhost ~]# echo -e "1\n2\n3\n"|awk 'BEGIN{ORS="@"}{print $0}'     # echo打印\n时要加-e  和"" 切记切记   ORS用@替换默认的\n   ORS和RS默认分割都是\n  ORS可以看做是RS倒过来的

                                          形式 以 ORS替换原来的\n 切割
1@2@3@@[root@localhost ~]#

grep 查询   sed 替换、插入  awk 按域查找

grep

-c     匹配行数量

-i      忽略大小写

-h     多文件查询不显示文件名

-l       只列出符合匹配的文件名,不显示具体的匹配行内容

-n      列出匹配行,并显示行号

-s       不显示,当查询不存在的文件名时出现错误信息将不会显示

-v       相反查询,显示不匹配的行

-w      匹配整个词

-x      匹配整行

-r       递归搜索,不仅搜索当前工作目录,而且搜索字目录

-q      不会输出任何结果   ,匹配成功$?为0   不成功为1

--color  显示匹配颜色  (用ssh软件自动带颜色 )

-A2 多加显示后两行

-B3  多加显示前3行

-C4   多加显示前后4行

-o   只显示匹配到的字符串

-E 支持扩展的正则表达式    grep -E 'C|cat' file      grep -E '^[[:space:]]+'  file 开头至少一个空白字符的行    grep -E = egrep

grep命令的-o和-P选项 2014-05-09 22:03:59

分类: Linux

先看man中介绍:      
-o, --only-matching: 只显示匹配部分的内容
              Show only the part of a matching line that matches PATTERN.      
-P, --perl-regexp:
              Interpret PATTERN as a Perl regular expression.

例如

#   echo "helloworld123456"| grep -o -P '\d+'

返回  123456

#echo "helloworld123456"| grep -o -P '[a-z]+'     #拓展正则  用egrep不加P也行

返回  helloworld

-P 选项是利用PERL的正则语法进行匹配

zzx@zzx134:~/dhcptest$ cat aaa; grep -q 33 aaa;echo $?;grep -q nihao aaa;echo $?
a b c d         aa      bb:11:33:::kkk
1 2 3 4         cc      dd:22:44:::qqq
0
1

zzx@zzx134:~/dhcptest$ grep -c ^$ aaa  #空白行数量
4

zzx@zzx134:~/dhcptest$ grep -cv ^$ aaa    #非空行
2

zzx@zzx134:~/dhcptest$ grep "\<aa\>"  aaa  #精确匹配
a b c d         aa      bb:11:33:::kkk
zzx@zzx134:~/dhcptest$ grep "\<a\>"  aaa 
a b c d         aa      bb:11:33:::kkk

zzx@zzx134:~/dhcptest$ grep [ab]  aaa       
a b c d         aa      bb:11:33:::kkk
zzx@zzx134:~/dhcptest$ grep [^ab]  aaa   #包含空   
a b c d         aa      bb:11:33:::kkk
1 2 3 4         cc      dd:22:44:::qqq

zzx@zzx120:~/zzx1/test1/test$ cat 11.txt |grep "[^1]"     
1 11 111
111 111
123 456  333
asd aaa
the

zzx@zzx120:~/zzx1/test1/test$ cat 11.txt |grep  "[^1 ]" 
123 456  333
asd aaa
the
hello i am zzx
hello i am zzx

zzx@zzx134:~/dhcptest$ grep -E "bb|dd" aaa    #扩张正则表达式            grep -E 等于  egrep           grep -F等于 fgrep
a b c d         aa      bb:11:33:::kkk
1 2 3 4         cc      dd:22:44:::qqq

awk

默认以空格为域分隔

zzx@zzx134:~$ ll |awk  '$5>102400 {print $9}'  #打印大小大于100k的文件名

echo "1:ab cd:line" |awk -F':' '{if($2=="ab cd")print "yes"}'

awk '{if($2!="in") print $2"       "$4}

sed

cat 2.txt |sed 's/^[ \t]*//g'  #删除行首空格或者tab

y 对应字符替换 e 连续字符替换    's/123/abc/g' 123整体换成abc  单独一个1是不会替换的     'y/123/abc/'   后面不加g  1换a 2换b 3换c  123个数要和abc对称  不能123/abcd   单独一个1会被替换成a

-i 写入文件    sed -i  's/123//g'  file   (  s/A/B/g  A替换B   )

i 特定行前插入一行    sed '/123/iAA' file   最好写'/123/i\AA\'           sed -i '/bb/i\\' file   特定行插入空行

a特定行后插入一行    sed '/123/aAA' file

d 删除特定行           sed '/123/'d file     sed '1'd file

p  打印特定行          sed -n '/113/'p file       sed  -n  '1'p  file     // 一定要加  sed -n '$p' 打印最后一行     sed -n 1,3p 打印1到3行   不能用1-3

-e   多个执行          sed -e '/5/'d -e '/N/'d at.txt  精确匹配用\<xxx\>

r  特定行后添加其他文本内容    sed   ‘2r  file1’  file2    file1的内容添加到file2文件的第二行后

w   符合的行保存到文件中   sed  ‘/oot/w   file’   file2    file2中符合oot的行保存到file中

s    查找替换 / @ #      sed   's/A/B/'   file     A换车B   每行的第一个A      加g代表全局所有A      s///g  加数字代表第几个匹配  s///2 替换第二个匹配        i忽略大小写   & 引用模式匹配整个串     sed 's/l..k/&r/g'  file      文件中   like love 等后面添加一个r    liker  lover

sed   'Xs/A/B/'   file    对X行操作  A换成B

sed '2s/\<abs\>/nihao/2' file  把第二行的第二次匹配的abs换成nihao

zzx@zzx11:~$ cat a
hello,like a love
hey,leee or LEEE
zzx@zzx11:~$ sed 's#l..e#&r#' a
hello,liker a love
hey,leeer or LEEE
zzx@zzx11:~$ sed 's#l..e#&r#g' a
hello,liker a lover
hey,leeer or LEEE
zzx@zzx11:~$ sed 's#l..e#&r#ig' a
hello,liker a lover
hey,leeer or LEEEr

\(...\) 正则表达式分组。进行子字符串提取(substring extraction)一起使用很有用
\n 第 n 个分组内容

{n} n是一个非负整数。匹配确定的n次。例如,''o{2}'' 不能匹配 "Bob"中的''o'',但是能匹配"food" 中的两个o。

{n,} n是一个非负整数。至少匹配n次。例如,''o{2,}'' 不能匹配"Bob"中的'o'',但能匹配 "foooood"中的所有o。''o{1,}''等价于''o+''。''o{0,}''则等价于''o*''。

\{ \} 指示前面正则表达式匹配的次数.

[root@localhost ~]# sed -n -e  '/66/p' -e '/2/p' 1    #打印含有2和66的行

zzx@zzx11:~$ sed 's#\(l..e\)#\1r#ig' a          
hello,liker a lover
hey,leeer or LEEEr

zzx@zzx134:~$ cat abc
ofjoaf
fjafjoa
..ofjoaf
zzx@zzx134:~$ sed 's/o/X/g' abc
XfjXaf
fjafjXa
..XfjXaf
zzx@zzx134:~$ cat abc         
ofjoaf
fjafjoa
..ofjoaf
zzx@zzx134:~$ sed -i 's/o/X/g' abc
zzx@zzx134:~$ cat abc            
XfjXaf
fjafjXa
..XfjXaf

sed常用命收集:test.txt做测试

 如何去掉行首的.字符: sed -i 's/^.//g' test.txt
在行首添加一个a字符: sed 's/^/a/g'    test.txt
在行尾添加一个a字符: sed 's/$/a/'     tets.txt
在特定行后添加一个c字符: sed '/wu/ac' test.txt

zzx@zzx103:~$ cat at.txt
1113
33465
a
r

zzx@zzx103:~$ sed '/r/aNO' at.txt  #含有r的行后加    '/1/aNO' 含有1的行后加NO    或写成  '/r/'aNO
1113
33465
a
r
NO

在行前加入一个c字符: sed '/wuguangke/ic' test.txt
zzx@zzx103:~$ sed '/33/'d at.txt
1113
a
NO
r
NO
  1. echo "123" | sed 'y/13/34/'
  2. 324
  3. echo "123" | sed 's/1/3/g;s/3/4/g'
  4. 424
  5. echo "axxbxxcxx" | sed 'y/abc/123/'
  6. 1xx2xx3xx
[解析]
这里把source里对应的1和3转换成3和4,得到这个结果,这里是一次匹配操作,跟第二个替换又是不一样的,注意这点区别。换句话说,象在第三个替换中,我们可以一次替换一些不连续的字符成另外的字符,但是注意source的字符数量与dest的要相等。

grep sed akw的更多相关文章

  1. linux(5)--补充(管道| / 重定向> / xargs)/find 与xargs结合使用/vi,grep,sed,awk(支持正则表达式的工具程序)

    本节中正则表达式的工具程序 grep,sed和awk是重点,也是难点!!! 先补充一下一. 管道| / 重定向> / xargs 如:1. 管道和重定向的区别:具体可以见 http://www. ...

  2. awk grep sed cut学习

    awk学习网站 grep sed cut

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

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

  4. grep, sed 与 awk 补补课,到底怎么用!

    grep, sed 与 awk 相当有用 ! gerp 查找, sed 编辑, awk 根据内容分析并处理. awk(关键字:分析&处理) 一行一行的分析处理 awk '条件类型1{动作1}条 ...

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

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

  6. 开发环境入门 linux基础 (部分)正则表达式 grep sed

    /etc/profile /etc/bashrc  .变量添加到shell环境中,永久生效. /root/.bashrc /root/.bash_profile 正则表达式 定义:正则就是用一些具有特 ...

  7. 日志检索实战 grep sed

    日志检索实战 grep sed 参考 sed命令 使用 grep -5 'parttern' inputfile //打印匹配行的前后5行 grep -C 5 'parttern' inputfile ...

  8. 日志分析查看——grep,sed,sort,awk运用

    概述 我们日常应用中都离不开日志.可以说日志是我们在排查问题的一个重要依据.但是日志并不是写了就好了,当你想查看日志的时候,你会发现线上日志堆积的长度已经超越了你一行行浏览的耐性的极限了.于是,很有必 ...

  9. Linux三剑客grep/sed/awk

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

随机推荐

  1. C++面试常见问题——12虚函数

    虚函数 虚函数的工作原理 虚函数的实现要求对象携带额外的信息,这些信息用于确定运行时调用哪一个虚函数,这一信息具有一种被称为虚函数表指针(vptr)的指针形式.vptr指向一个被称为虚函数表(vtbl ...

  2. Linux基础命令、软件安装

    常用命令 查看当前系统中存在哪些shell cat /etc/shells [root@** ~]# cat /etc/shells /bin/sh /bin/bash /usr/bin/sh /us ...

  3. 039、Java中逻辑运算之普通与运算“&”

    01.代码如下: package TIANPAN; /** * 此处为文档注释 * * @author 田攀 微信382477247 */ public class TestDemo { public ...

  4. leetcode1162 As Far from Land as Possible

    """ Given an N x N grid containing only values and , represents water and represents ...

  5. C++ 语言程序设计(清华大学)2

    面向对象 1.面向对象程序基本特点:抽象.封装.继承.多态 2.类分为:公有类型成员public(接口),私有类型成员private(本类函数访问,类外要用友元函数访问),保护类型成员protect( ...

  6. centos搭建gitlib

    sudo yum install -y curl policycoreutils-python openssh-server sudo yum -y install postfixsudo syste ...

  7. oracle job不运行,定位问题

    一. job的运行频率设置 1.每天固定时间运行,比如早上8:10分钟:Trunc(Sysdate+1) + (8*60+10)/24*60 2.Toad中提供的: 每天:trunc(sysdate+ ...

  8. Vuex源码分析(转)

    当我们用vue在开发的过程中,经常会遇到以下问题 多个vue组件共享状态 Vue组件间的通讯 在项目不复杂的时候,我们会利用全局事件bus的方式解决,但随着复杂度的提升,用这种方式将会使得代码难以维护 ...

  9. 吴裕雄--天生自然java开发常用类库学习笔记:Set接口

    import java.util.HashSet ; import java.util.Set ; public class HashSetDemo01{ public static void mai ...

  10. use matplotlib to draw scatter plot

    There are many pionts in this kind of table. How to do it? We can use scatter() to draw it. Code: im ...