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. 2. react 简书 头部(header) 图标添加

    1. 访问 iconfont 并注册 登陆 2. 进入 iconfont 头部 图标管理->我的项目 3. 点击右边的文件夹 + 号 图标 创建我的项目 输入项目名称即可 4.在 搜索框 搜索 ...

  2. java.lang.IllegalStateException: Active Spring transaction synchronization or active JTA transaction with specified [javax.transaction.TransactionManager] required

    错误信息: java.lang.IllegalStateException: Active Spring transaction synchronization or active JTA trans ...

  3. SwiftUI中多设备运行方法

    https://blog.csdn.net/weixin_42679753/article/details/94465674 https://www.jianshu.com/p/17fc7929fcb ...

  4. 使用jquery版本的viewer.js图片更新的问题

    参考博客: 使用jquery版本的viewer.js图片更新的问题 - cc_fys的博客 - CSDN博客 https://blog.csdn.net/cc_fys/article/details/ ...

  5. c# copydata 消息

    using PublicCode; using System; using System.Collections.Generic; using System.ComponentModel; using ...

  6. 在xampp下安装thinkphp5

    在xampp2016下安装thinkphp5 (本人的坑,说白了就是把thinkphp5的文件放到htdocs下) 1.把该xampp中的php文件夹路径设置进环境变量,这样才能全局运行compose ...

  7. c# 外挂操作(内存操作)(内存读写取窗口句柄移动窗口取模块地址)工具类

    来源于网上  参考 https://www.cnblogs.com/fuhua/p/5877781.html 等众多文章 详情取看我第二个例子封装功能较多 https://www.cnblogs.co ...

  8. js数字排序方法

    function bubbleSort(arr){ var flag = false; // 定义一个变量为false,未交换位置 for(var i=0;i<arr.length-1;i++) ...

  9. C语言里面和时间有关的函数

    参考链接 https://blog.csdn.net/ffcjjhv/article/details/83376767 0)Head file #include "time.h" ...

  10. nodejs 杂七杂八

    nodejs => 提供核心模块语法 node中的回调函数 都是异步