sed [options] '[action]' filename

options:

  -n:一般sed命令会把所有数据都输出到屏幕,如果加入此选项,则只会把经过sed命令处理的行输出到屏幕。

  -e:允许对输入数据应用多条sed命令编辑。

  -i:用sed的修改结果直接修改读取数据的文件,而不是由屏幕输出。

actions:

  -a:追加,在当前行后添加一行或多行

  -c:行替换,用c后面的字符串替换原数据行。

  -i:插入,在当前行前插入一行或多行。

  -d:删除,删除指定的行。

  -p:打印,输出指定的行。

  -s:字符替换,用一个字符串替换另一个字符串。格式为“行范围s/旧字符串/新字符串/g”(和vim中的替换格式类似)

 [ucm@MacBook-Pro testpace]$ cat stu.log
ID NAME GENDER SOURCE
FURONG F
FENGJ F
CANG F
[ucm@MacBook-Pro testpace]$ sed '2p' stu.log
ID NAME GENDER SOURCE
FURONG F
FURONG F
FENGJ F
CANG F
[ucm@MacBook-Pro testpace]$ sed -n '2p' stu.log
FURONG F
[ucm@MacBook-Pro testpace]$

delete 第二行到第四行的数据,但是不改变文件自身。

[ucm@MacBook-Pro testpace]$ sed '2,4d' stu.log
ID NAME GENDER SOURCE
 #在第二行后,追加该字符串
[ucm@MacBook-Pro testpace]$ sed '2a piaoliang jiushi renxing' stu.log
ID NAME GENDER SOURCE
FURONG F
piaoliang jiushi renxing
FENGJ F
CANG F
#在第二行前插入字符串
[ucm@MacBook-Pro testpace]$ sed '2i meinv' stu.log
ID NAME GENDER SOURCE
meinv
FURONG F
FENGJ F
CANG F
#c 行替换命令
[ucm@MacBook-Pro testpace]$ sed '3c FENGJ bujige' stu.log
ID NAME GENDER SOURCE
FURONG F
FENGJ bujige
CANG F
# 替换字符串
[ucm@MacBook-Pro testpace]$ sed '3s/66/90/g' stu.log
ID NAME GENDER SOURCE
FURONG F
FENGJ F
CANG F
[ucm@MacBook-Pro testpace]$ cat stu.log
ID NAME GENDER SOURCE
FURONG F
FENGJ F
CANG F
# 替换字符串 同时写入文件
# s前加数字,搜索指定位置,不加数字,搜索整篇文档;后面加g代表替换全部,不加g则,仅仅替换一处
[ucm@MacBook-Pro testpace]$ sed -i '3s/66/90/g' stu.log
[ucm@MacBook-Pro testpace]$ cat stu.log
ID NAME GENDER SOURCE
FURONG F
FENGJ F
CANG F
#执行多条sed命令
[ucm@MacBook-Pro testpace]$ sed -e 's/FENGJ/boxilai/g;s/CANG//g' stu.log
ID NAME GENDER SOURCE
FURONG F
boxilai F
F
[ucm@MacBook-Pro testpace]$ cat stu.log
ID NAME GENDER SOURCE
FURONG F
FENGJ F
CANG F
[ucm@MacBook-Pro testpace]$

排序命令:

sort [option] filename

options:

  -f:忽略大小写

  -n:以数值进行排序,默认使用字符串进行排序

  -r:反向排序

  -t:指定分隔符,默认分隔符是制表符

  -k n[,m]:按照指定的字段范围进行排序。从第n字段开始,m字段结束。(默认到行尾)

 #指定分隔符是“:”,用第三字段开头,第三字段结尾进行排序,就是只用第三个字段进行排序
[ucm@MacBook-Pro testpace]$ sort -t ":" -k "3,3" /etc/passwd
#以数值进行排序
[ucm@MacBook-Pro testpace]$ sort -n -t ":" -k "3,3" /etc/passwd

统计命令

wc [option] 文件名

options:

  -l:只统计行数

  -w:只统计单词数

  -m:只统计字符数

 [ucm@MacBook-Pro testpace]$ wc /etc/passwd
/etc/passwd
[ucm@MacBook-Pro testpace]$ wc -l /etc/passwd
/etc/passwd
[ucm@MacBook-Pro testpace]$ wc -w /etc/passwd
/etc/passwd
[ucm@MacBook-Pro testpace]$ wc -m /etc/passwd
/etc/passwd
[ucm@MacBook-Pro testpace]$

字符截取命令

awk '条件1{动作1}条件2{动作2}···' filename

条件(Pattern):

  一般使用关系表达式作为条件

  x > 10 判断变量x是否大于10

  x>=10大于等于

  x<=10小于等于

动作(Action):

  格式化输出

  流程控制语句

 [ucm@MacBook-Pro testpace]$ df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/cl-root 143G 108G 28G % /
devtmpfs 483M 483M % /dev
tmpfs 497M 156K 497M % /dev/shm
tmpfs 497M 7.1M 490M % /run
tmpfs 497M 497M % /sys/fs/cgroup
/dev/sda2 380M 130M 226M % /boot
tmpfs 100M 20K 100M % /run/user/
[ucm@MacBook-Pro testpace]$ df -h | awk '{print $1 "\t" $3}'
文件系统 已用
/dev/mapper/cl-root 108G
devtmpfs
tmpfs 156K
tmpfs 7.1M
tmpfs
/dev/sda2 130M
tmpfs 20K
[ucm@MacBook-Pro testpace]$
 [ucm@MacBook-Pro testpace]$ df -h | grep "/cl-root" | awk '{print $5}'
%
[ucm@MacBook-Pro testpace]$ df -h | grep "/cl-root" | awk '{print $5}' | cut -f -d "%" [ucm@MacBook-Pro testpace]$
 [ucm@MacBook-Pro testpace]$ awk 'BEGIN{print "this is testcase"} {print $2 "\t" $4}' stu.log
this is testcase
NAME SOURCE
FURONG
FENGJ
CANG
[ucm@MacBook-Pro testpace]$ awk 'BEGIN{print "this is testcase"}{print $2 "\t" $4}' stu.log
this is testcase
NAME SOURCE
FURONG
FENGJ
CANG
[ucm@MacBook-Pro testpace]$ awk '{print $2 "\t" $4}' stu.log
NAME SOURCE
FURONG
FENGJ
CANG
[ucm@MacBook-Pro testpace]$ awk 'END{print "this is end"} {print $2 "\t" $4}' stu.log
NAME SOURCE
FURONG
FENGJ
CANG
this is end
[ucm@MacBook-Pro testpace]$

FS内置变量

 [ucm@MacBook-Pro testpace]$ cat /etc/passwd | grep "/bin/bash"
root:x:::root:/root:/bin/bash
amandabackup:x:::Amanda user:/var/lib/amanda:/bin/bash
ucm:x:::ucm:/home/ucm:/bin/bash
[ucm@MacBook-Pro testpace]$ cat /etc/passwd | grep "/bin/bash" | grep -v root
amandabackup:x:::Amanda user:/var/lib/amanda:/bin/bash
ucm:x:::ucm:/home/ucm:/bin/bash
[ucm@MacBook-Pro testpace]$ cat /etc/passwd | grep "/bin/bash" | grep -v root | awk '{FS=":"} {print $1 "\t" $3}'
amandabackup:x:::Amanda
ucm
[ucm@MacBook-Pro testpace]$ cat /etc/passwd | grep "/bin/bash" | grep -v root | awk 'BEGIN{FS=":"} {print $1 "\t" $3}'
amandabackup
ucm
[ucm@MacBook-Pro testpace]$
 [ucm@MacBook-Pro testpace]$ cat stu.log
ID NAME GENDER SOURCE
FURONG F
FENGJ F
CANG F
[ucm@MacBook-Pro testpace]$ cat stu.log | grep -v NAME
FURONG F
FENGJ F
CANG F
[ucm@MacBook-Pro testpace]$ cat stu.log | grep -v NAME | awk '$4>=90{print $2}'
FURONG
FENGJ
[ucm@MacBook-Pro testpace]$

sed awk 样例的更多相关文章

  1. sed awk 小例

    实现数据库批量更新与回滚 create database awktest; use awktest create table user(    id int unsigned not null uni ...

  2. shell脚本实例-菜单样例

    1.9.1 实例需求 用户在进行Linux系统管理的过程中,经常需要用到查看进程的信息.用户的信息等常用的功能.本例针对这一需求,使用shell编程实现基本的系统管理 功能.通过本程序,可以按照要求实 ...

  3. Sed&awk笔记之sed篇

    http://blog.csdn.net/a81895898/article/details/8482387 Sed是什么 <sed and awk>一书中(1.2 A Stream Ed ...

  4. Sed&awk笔记之sed篇(转)

    Sed是什么 <sed and awk>一书中(1.2 A Stream Editor)是这样解释的: Sed is a "non-interactive" strea ...

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

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

  6. C++的性能C#的产能?! - .Net Native 系列《三》:.NET Native部署测试方案及样例

    之前一文<c++的性能, c#的产能?!鱼和熊掌可以兼得,.NET NATIVE初窥> 获得很多朋友支持和鼓励,也更让我坚定做这项技术的推广者,希望能让更多的朋友了解这项技术,于是先从官方 ...

  7. MarkDown+LaTex 数学内容编辑样例收集

    $\color{green}{MarkDown+LaTex 数学内容编辑样例收集}$ 1.大小标题的居中,大小,颜色 [例1] $\color{Blue}{一元二次方程根的分布}$ $\color{R ...

  8. 33个超级有用必须要收藏的PHP代码样例

    作为一个正常的程序员,会好几种语言是十分正常的,相信大部分程序员也都会编写几句PHP程序,如果是WEB程序员,PHP一定是必备的,即使你没用开发过大型软件项目,也一定多少了解它的语法. 在PHP的流行 ...

  9. 关于peersim样例配置文件的超详细解读(新手勿喷)

    相信很多兄弟一开始接触peersim,对配置文件还是有点不适应,我看了好久的样例的配置文件,一层层去找对应的文件的方法,终于好像悟懂了一点,记下来以后回顾. 贴上代码,一点点分析. 首先要说下所谓的配 ...

随机推荐

  1. "Becoming Functional" 阅读笔记+思维导图

    <Becoming Functional>是O'Reilly公司今年(2014)7月发布的一本薄薄的小册子,151页,介绍了函数式编程的基本概念.全书使用代码范例都是基于JVM的编程语言, ...

  2. SQLite学习笔记(十一)&&虚拟机原理

    前言      我们知道任何一种关系型数据库管理系统都支持SQL(Structured Query Language),相对于文件管理系统,用户不用关心数据在数据库内部如何存取,也不需要知道底层的存储 ...

  3. 初学JavaScript

    什么是 JavaScript? JavaScript 被设计用来向 HTML 页面添加交互行为. JavaScript 是一种脚本语言(脚本语言是一种轻量级的编程语言). JavaScript 由数行 ...

  4. sys.dm_os_waiting_tasks 引发的疑问(上)

    很多人在查看SQL语句等待的时候都是通过sys.dm_exec_requests查看,等待类型也是通过wait_type得出,sys.dm_os_waiting_tasks也可以看到session的等 ...

  5. STM32 按键输入

    #include "stm32f10x.h"#include "key.h" //按键初始化函数void KEY_Init(void) { GPIO_InitT ...

  6. jQuery获取margin-top和padding-top的值

    var bordT = $('img').outerWidth() - $('img').innerWidth();  var paddT = $('img').innerWidth() - $('i ...

  7. BootStrap学习笔记,优缺点总结

    本篇约定Bootstrap简写为BT   BT的受欢迎程度是大家有目共睹的,用它可以快速的搭建出网站.很早就接触过这个框架,其中的栅格系统,css模块化以及js插件做的相当不错,由于工作中较少使用也一 ...

  8. 【WPF】新复制wpf项目报错

    错误提示:Program does not contain a static 'Main' method suitable for an entry point 1.App.xaml 文件属性:生成操 ...

  9. python基础-软件目录结构规范

    一.定义目录结构目的 可读性高: 不熟悉这个项目的代码的人,一眼就能看懂目录结构,知道程序启动脚本是哪个,测试目录在哪儿,配置文件在哪儿等等.从而非常快速的了解这个项目. 可维护性高: 定义好组织规则 ...

  10. CentOS安装Maven

    现有的一个项目使用了Maven来管理,源代码放到了Subversion中.虽然Maven管理项目很方便,但是部署起来还是很麻烦的.先要在本地生成项目jar包,上传到服务器,然后再重启服务.如果在服务器 ...