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. 使用 Json.Net 对Json文本进行 增删改查

    JSON 已经成为当前主流交互格式, 如何在C#中使用 Json.Net 对Json文本进行 增删改查呢?见如下代码 #region Create (从零创建) public static strin ...

  2. Oracle插入日期格式出现 ORA-01843: not a valid month的解决办法

    Oracle 在插入时间类型的时候如果不注意插入的格式就很容易出错,基本上只要转一下时间格式就可以解决. DateTime转成特定格式的字符串: var dateString = DateTime.N ...

  3. BZOJ 3144: [Hnoi2013]切糕

    3144: [Hnoi2013]切糕 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 1495  Solved: 819[Submit][Status] ...

  4. VS 生成事件

    转载自: http://hi.baidu.com/gisince/item/7f0439ee610c94255a2d64b4 今天写了生成事件的处理,如下: 从网上Down了一个例子,运行时提示错误 ...

  5. [LeetCode] Shortest Palindrome 最短回文串

    Given a string S, you are allowed to convert it to a palindrome by adding characters in front of it. ...

  6. nginx+iis实现负载均衡

    最近在研究分布式系统架构方面的知识,包括负载均衡,数据库读写分离,分布式缓存redis等.本篇先从负载均衡服务架构入手,关于负载均衡百度百科的定义如下:负载均衡,英文名称为Load Balance,其 ...

  7. IT培训行业揭秘(一)

    最近一个多月来,身边有很多朋友问我,我家孩子明年就要大学毕业了,现在工作还没有着落,最近孩子回家经常和我说,他们学校最近来了很多IT培训班,让同学们参加培训,然后各个培训班动辄拿出往届他们的培训学生赚 ...

  8. 如何用Azure Web App Services接入微信公众号

    注:本文提到的代码示例下载地址>如何用Azure Web App Services接入微信公众号 如何用Azure Web App Services接入微信公众号 简介 此示例演示如何创建Azu ...

  9. Codeforces Round #382(div 2)

    A.= = B. 题意:给出n个数和n1和n2,从n个数中分别选出n1,n2个数来,得到n1个数和n2个数的平均值,求这两个平均值的最大和 分析:排个序从后面抽,注意先从末尾抽个数小的,再抽个数大的 ...

  10. 支持同步滚动的RichTextbox控件

    using System.Windows.Forms; public class SynchronizedScrollRichTextBox : System.Windows.Forms.RichTe ...