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. tan?

    痰是一种急.慢性气管--支气管炎,咳.痰.喘.炎是下呼吸道感染的常见主征.下呼吸道感染有急性和慢性之分.急性感染主要的是急性气管--支气管炎,是呼吸系统最常见的一种疾病,多由感染.物理化学刺激或过敏引 ...

  2. 027、MySQL字符串替换函数,文本替换函数,字符串填充函数

    #文本填充 ,'); #ABC12121212121212121 #文本替换 SELECT REPLACE('田攀520','攀','ABC'); #田ABC520 不忘初心,如果您认为这篇文章有价值 ...

  3. 4.RabbitMQ 4种交换模式

    请看 demo https://github.com/kevin-li-06/eshop.git

  4. openalyser6学习

    1.安装nvm.nvm下载地址:https://github.com/coreybutler/nvm-windows/releases使用nvm-setup安装和下载nodejs:https://ww ...

  5. (九)微信小程序---for指令

    对于数据是列表 wxml <view wx:for="{{dataList}}">{{index}}-{{item}}</view> 我们可以看到上面的代码 ...

  6. decodeURIComponent 测试

    var test1="http://www.wljcz.com/My first/"; var nn=encodeURI(test1); var now=decodeURI(tes ...

  7. LINUX——磁盘管理

    硬盘种类 SATA硬盘:用SATA接口的硬盘又叫串口硬盘,是以后PC机的主流发展方向,因为其有较强的纠错能力,错误一经发现能自动纠正,这样就大大的提高了数据传输的安全性.新的SATA 使用了差动信号系 ...

  8. 在远程服务器上执行本地的shell脚本

    在远程服务器上执行本地的shell脚本 [root@localhost zzx]# sh echoip.sh 192.168.67.131[root@localhost zzx]# ssh root@ ...

  9. SLAM的评测工具evo

    遇到的问题 今天用orbslam2跑euroc数据集,将结果和真实轨迹用evo测评,发现差别特别大: evo_traj tum data.tum CameraTrajectory.txt --plot ...

  10. spring boot 连接Mysql介绍

    Spring Boot 集成教程 Spring Boot 介绍 Spring Boot 开发环境搭建(Eclipse) Spring Boot Hello World (restful接口)例子 sp ...