e股脑电脑教程网
  • 首 页
  • 操作系统
  • 应用软件
  • 下载工具
  • 影音视频
  • 办公软件
  • 媒体制作
  • 网站建设
  • 平面设计
  • 数据库
  • 程序开发
  • 视频教程
编辑推荐: | 文章搜索:
您现在的位置: e股脑 >> 数据库 >> Mssql教程 >> awk和sed整理后资料 >> 教程正文
 
教程搜索
 
 
相关教程
  • 你知道MySQL10条鲜为人知的技巧吗?
  • 你应该知道的10个MySQL客户启动选项
  • 用特殊的MySQL运算符获得更多数据比较
  • MySQL数据库中与 NULL值有关的几个问题
  • 教你快速了解公共MySQL的数据库服务器
  • MySQL 5.0在windows上的安装详细介绍
  • MySQL查询的性能优化
  • Linux操作系统中如何安装MySQL数据库
  • 23道安全门加铸MySQL数据库
  • MySQL 5.0 数据库新特性的存储过程
  • 从Windows命令行启动MySQL
  • 连接MySQL数据库失败频繁的原因
  • 加速动态网站 MySQL索引分析和优化
  • 轻松掌握如何保护MySQL中的重要数据
  • 快速掌握MySQL数据库中Show命令的用法
  • MySQL数据库的安全配置实用技巧
 
 

图文教程


  • Windows抢了谁的饭碗 非主流操作系统To

  • 地球还是火星 平常心看“非主流”

  • 综合运用Office 2007批量制作奖状

  • 没有系统盘如何才能修复受损系统?

  • 巧妙运用Excel中边界的附加功能!
 
 
赞 助 商
 
 
awk和sed整理后资料
  • 来源:e股脑
  • 点击次数:
  • 更新时间:2007-8-9

sed及awk部分为本人学习笔记,呵呵,自己写的哦

sed命令:

格式:sed -e 's/aaa/bbb/g' -n -e '/XXX/p' -e '/YYY/d' filename

命令参数:

-e 执行多个SED命令

s替换

g全文

-n显示过滤后的部分,否则会重复显示一次原文

p显示出来print

d删除

\把元字符转化($,\.,\^,\/)

正则表格式:

/^$/ 空行

/^.*/ 一整行

/*/ 一个或多个空格

/[a-zA-Z][a-zA-Z]*:W[a-zA-Z0-9][a-zA-Z0-9\.]*.*/ 有效的URL

例:

$cat tt

aaa XXX

aaa YYY

bbb XXX

bbb YYY

$sed -e 's/aaa/bbb/g' -n -e '/XXX/p' -e '/YYY/d' tt

bbb XXX

bbb XXX

hos08:/u1/hos08/tmp>

注解:把aaa替换成bbb,过滤包含XXX的行,删除包含YYY的行。

awk (一)

< 小于

> 大于

<= 小于等于

>= 大于等于

== 等于

!= 不等于

value~/pattern/ 如果value匹配样式,为真

value!~/pattern/ 如果value不匹配样式,为真

&& A与B

|| A或B

使用 printf语句中参数可以使段落整齐。$cat tt

aaa XXX 100 5

aaa YYY 98 9

bbb XXX 111 3

bbb YYY 99 8过滤包含aaa的行并以,"TTT",格式显示出来

$awk ' /aaa/ {print ,"TTT",;} ' tt

XXX TTT aaa

YYY TTT aaa

过滤第三列为2位数字,并且第四列大于5的行

$awk ' ( ~ /[0-9][0-9]/ ) && ( > 5 ) { print ,,, ;}' tt

aaa YYY 98 9

bbb YYY 99 8把所列行后边加*号

$awk ' ( ~ /[0-9][0-9]/ ) && ( > 5 ) { printf "%s\t%s\n" ,,"*";}' tt

aaa YYY 98 9 *

bbb YYY 99 8 *把第一列替换成nnn并在结尾加TTT,再把第一列替换成uuu直接显示。

$awk ' = "nnn" { printf "%s\t%s\n" , , "TTT" ; } = "uuu" { print ; } ' tt


nnn XXX 100 5 TTT

uuu XXX 100 5

nnn YYY 98 9 TTT

uuu YYY 98 9

nnn XXX 111 3 TTT

uuu XXX 111 3

nnn YYY 99 8 TTT

uuu YYY 99 8针对上一行加入了next,其功能是如果第一段命令为真则跳过以后段直接重新开始检查

$awk ' = "nnn" { printf "%s\t%s\n" , , "TTT" ;next; } = "uuu" { print ; } ' tt

nnn XXX 100 5 TTT

nnn YYY 98 9 TTT

nnn XXX 111 3 TTT

nnn YYY 99 8 TTT把第三列大于等于100的行加TTT,再把第四列大于等于5的行连同上一查询结果一同列出来。

$awk ' >= 100 { printf "%s\t%s\n" ,,"TTT" ; } >= 5 { print ; } ' tt

aaa XXX 100 5 TTT

aaa XXX 100 5

aaa YYY 98 9

bbb XXX 111 3 TTT

bbb YYY 99 8把第三列大于等于100的行加TTT,再把小于100的行连同上一查询一同列出来。

$awk ' >= 100 { printf "%s\t%s\n" ,,"TTT" ; } < 100 { print ; } ' tt

aaa XXX 100 5 TTT

aaa YYY 98 9

bbb XXX 111 3 TTT

bbb YYY 99 8 搭配其他命令来使用。

$w

3:16pm up 4 days, 8:34, 30 users, load average: 0.97, 0.78, 0.80

USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT

usr0809 pts/1 172.26.4.52 2:31pm 23:52 0.54s 0.00s -bash

usr0809 pts/2 172.26.4.49 12:53pm 0.00s 10.68s 0.03s -bash

u0809 pts/3 172.26.4.56 7:39am 28:29 7.59s 0.01s -bash

u0809 pts/4 172.26.4.51 2:20pm 55:45 0.12s 0.02s -bash过滤包含pts的行,并显示它的第三和第一列

$w |awk ' = /pts/ {printf "%s\t%s\n",,;}'

172.26.4.52 user1

172.26.4.49 user2

172.26.4.56 user3

172.26.4.51 user4


  • 上一篇教程: 新手入门--全面介绍MySQL的基础应用
  • 下一篇教程: SHELL举例综合
  •  

    关于本站 | 广告联系 | 版权声明 | 使用帮助

    Copyright © 2004-2008 www.egunao.com All rights reserved.