sed awk 样例

sed [options] ‘[action]‘ filename

options:

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

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

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

actions:

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

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

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

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

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

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

 1 [[email protected] testpace]$ cat stu.log
 2 ID    NAME    GENDER    SOURCE
 3 1    FURONG    F    99
 4 2    FENGJ    F    66
 5 3    CANG    F    88
 6 [[email protected] testpace]$ sed ‘2p‘ stu.log
 7 ID    NAME    GENDER    SOURCE
 8 1    FURONG    F    99
 9 1    FURONG    F    99
10 2    FENGJ    F    66
11 3    CANG    F    88
12 [[email protected] testpace]$ sed -n ‘2p‘ stu.log
13 1    FURONG    F    99
14 [[email protected] testpace]$ 

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

[[email protected] testpace]$ sed ‘2,4d‘ stu.log
ID	NAME	GENDER	SOURCE
 1 #在第二行后,追加该字符串
 2 [[email protected] testpace]$ sed ‘2a piaoliang jiushi renxing‘ stu.log
 3 ID    NAME    GENDER    SOURCE
 4 1    FURONG    F    99
 5 piaoliang jiushi renxing
 6 2    FENGJ    F    66
 7 3    CANG    F    88
 8 #在第二行前插入字符串
 9 [[email protected] testpace]$ sed ‘2i meinv‘ stu.log
10 ID    NAME    GENDER    SOURCE
11 meinv
12 1    FURONG    F    99
13 2    FENGJ    F    66
14 3    CANG    F    88
15 #c 行替换命令
16 [[email protected] testpace]$ sed ‘3c FENGJ bujige‘ stu.log
17 ID    NAME    GENDER    SOURCE
18 1    FURONG    F    99
19 FENGJ bujige
20 3    CANG    F    88
21 # 替换字符串
22 [[email protected] testpace]$ sed ‘3s/66/90/g‘ stu.log
23 ID    NAME    GENDER    SOURCE
24 1    FURONG    F    99
25 2    FENGJ    F    90
26 3    CANG    F    88
27 [[email protected] testpace]$ cat stu.log
28 ID    NAME    GENDER    SOURCE
29 1    FURONG    F    99
30 2    FENGJ    F    66
31 3    CANG    F    88
32 # 替换字符串 同时写入文件
33 # s前加数字,搜索指定位置,不加数字,搜索整篇文档;后面加g代表替换全部,不加g则,仅仅替换一处
34 [[email protected] testpace]$ sed -i ‘3s/66/90/g‘ stu.log
35 [[email protected] testpace]$ cat stu.log
36 ID    NAME    GENDER    SOURCE
37 1    FURONG    F    99
38 2    FENGJ    F    90
39 3    CANG    F    88
40 #执行多条sed命令
41 [[email protected] testpace]$ sed -e ‘s/FENGJ/boxilai/g;s/CANG//g‘ stu.log
42 ID    NAME    GENDER    SOURCE
43 1    FURONG    F    99
44 2    boxilai    F    90
45 3        F    88
46 [[email protected] testpace]$ cat stu.log
47 ID    NAME    GENDER    SOURCE
48 1    FURONG    F    99
49 2    FENGJ    F    90
50 3    CANG    F    88
51 [[email protected] testpace]$ 

排序命令:

sort [option] filename

options:

  -f:忽略大小写

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

  -r:反向排序

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

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

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

统计命令

wc [option] 文件名

options:

  -l:只统计行数

  -w:只统计单词数

  -m:只统计字符数

1 [[email protected] testpace]$ wc /etc/passwd
2   42   86 2223 /etc/passwd
3 [[email protected] testpace]$ wc -l /etc/passwd
4 42 /etc/passwd
5 [[email protected] testpace]$ wc -w /etc/passwd
6 86 /etc/passwd
7 [[email protected] testpace]$ wc -m /etc/passwd
8 2223 /etc/passwd
9 [[email protected] testpace]$ 

字符截取命令

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

条件(Pattern):

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

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

  x>=10大于等于

  x<=10小于等于

动作(Action):

  格式化输出

  流程控制语句

 1 [[email protected] testpace]$ df -h
 2 文件系统             容量  已用  可用 已用% 挂载点
 3 /dev/mapper/cl-root  143G  108G   28G   80% /
 4 devtmpfs             483M     0  483M    0% /dev
 5 tmpfs                497M  156K  497M    1% /dev/shm
 6 tmpfs                497M  7.1M  490M    2% /run
 7 tmpfs                497M     0  497M    0% /sys/fs/cgroup
 8 /dev/sda2            380M  130M  226M   37% /boot
 9 tmpfs                100M   20K  100M    1% /run/user/1000
10 [[email protected] testpace]$ df -h | awk ‘{print $1 "\t" $3}‘
11 文件系统    已用
12 /dev/mapper/cl-root    108G
13 devtmpfs    0
14 tmpfs    156K
15 tmpfs    7.1M
16 tmpfs    0
17 /dev/sda2    130M
18 tmpfs    20K
19 [[email protected] testpace]$ 

1 [[email protected] testpace]$ df -h | grep "/cl-root" | awk ‘{print $5}‘
2 80%
3 [[email protected] testpace]$ df -h | grep "/cl-root" | awk ‘{print $5}‘ | cut -f 1 -d "%"
4 80
5 [[email protected] testpace]$ 
 1 [[email protected] testpace]$ awk ‘BEGIN{print "this is testcase"} {print $2 "\t" $4}‘ stu.log
 2 this is testcase
 3 NAME    SOURCE
 4 FURONG    99
 5 FENGJ    90
 6 CANG    88
 7 [[email protected] testpace]$ awk ‘BEGIN{print "this is testcase"}{print $2 "\t" $4}‘ stu.log
 8 this is testcase
 9 NAME    SOURCE
10 FURONG    99
11 FENGJ    90
12 CANG    88
13 [[email protected] testpace]$ awk ‘{print $2 "\t" $4}‘ stu.log
14 NAME    SOURCE
15 FURONG    99
16 FENGJ    90
17 CANG    88
18 [[email protected] testpace]$ awk ‘END{print "this is end"} {print $2 "\t" $4}‘ stu.log
19 NAME    SOURCE
20 FURONG    99
21 FENGJ    90
22 CANG    88
23 this is end
24 [[email protected] testpace]$ 

FS内置变量

 1 [[email protected] testpace]$ cat /etc/passwd | grep "/bin/bash"
 2 root:x:0:0:root:/root:/bin/bash
 3 amandabackup:x:33:6:Amanda user:/var/lib/amanda:/bin/bash
 4 ucm:x:1000:1000:ucm:/home/ucm:/bin/bash
 5 [[email protected] testpace]$ cat /etc/passwd | grep "/bin/bash" | grep -v root
 6 amandabackup:x:33:6:Amanda user:/var/lib/amanda:/bin/bash
 7 ucm:x:1000:1000:ucm:/home/ucm:/bin/bash
 8 [[email protected] testpace]$ cat /etc/passwd | grep "/bin/bash" | grep -v root | awk ‘{FS=":"} {print $1 "\t" $3}‘
 9 amandabackup:x:33:6:Amanda
10 ucm    1000
11 [[email protected] testpace]$ cat /etc/passwd | grep "/bin/bash" | grep -v root | awk ‘BEGIN{FS=":"} {print $1 "\t" $3}‘
12 amandabackup    33
13 ucm    1000
14 [[email protected] testpace]$ 
 1 [[email protected] testpace]$ cat stu.log
 2 ID    NAME    GENDER    SOURCE
 3 1    FURONG    F    99
 4 2    FENGJ    F    90
 5 3    CANG    F    88
 6 [[email protected] testpace]$ cat stu.log | grep -v NAME
 7 1    FURONG    F    99
 8 2    FENGJ    F    90
 9 3    CANG    F    88
10 [[email protected] testpace]$ cat stu.log | grep -v NAME | awk ‘$4>=90{print $2}‘
11 FURONG
12 FENGJ
13 [[email protected] testpace]$ 
时间: 2024-08-01 23:01:11

sed awk 样例的相关文章

[CentOS 7系列]grep/sed/awk实战

最近准备和CoreSite - Any2 California接入商建立网络BGP邻居关系.从peeringdb (https://www.peeringdb.com/ix/142)上找到了所有接入商的信息,但是转移信息到本地不是很方便,需要进行多次文本调整,耗时较长.作为萌新,立马就想到近期学习的grep/sed/awk工具.于是就尝试处理数据. 1.下载页面内容 curl https://www.peeringdb.com/ix/142 > peering 将页面内容存入peering文件

文本处理工具之:grep sed awk

正则就是用一些具有特殊含义的符号组合一起来描述字符或字符串的方法.在linux中,通配符是由shell解释的,而正则表达式则是由命令解释的,下面我们就为大家介绍三种文本处理工具/命令:grep.sed.awk,它们三者均可以解释正则 一:grep 参数 -n :显示行号 -o :只显示匹配的内容 -q :静默模式,没有任何输出,得用$?来判断执行成功没有,即有没有过滤到想要的内容 -l :如果匹配成功,则只将文件名打印出来,失败则不打印,通常-rl一起用,grep -rl 'root' /etc

Sed&amp;awk笔记之sed篇(转)

Sed是什么 <sed and awk>一书中(1.2 A Stream Editor)是这样解释的: Sed is a "non-interactive" stream-oriented editor. It is stream-oriented because, like many UNIXprograms, input flows through the program and is directed to standard output. Sed本质上是一个编辑器,

深入浅出linux三剑客之sed必杀技一例

转 http://oldboy.blog.51cto.com/2561410/949365 缘起:上完培训课后,同学们对sed加正则处理问题的热情高涨,氛围相当好,但是,有个别同学还是有些晕乎,因此,撰写此文.此例如果搞熟练了,sed和正则的大部分常用技术你掌握起来就简单了. 如果还有不会的,老男孩就拿出最后的讲解必杀技(先保密,嘿!),同学们想不会那是不可能的,除非你们自己主动放弃,哈哈.来,开整~! 老男孩linux培训第三节课程课前第考试一题,问题如下 1.如何取得/etiantian文件

Sed&amp;awk笔记之sed篇

http://blog.csdn.net/a81895898/article/details/8482387 Sed是什么 <sed and awk>一书中(1.2 A Stream Editor)是这样解释的: Sed is a "non-interactive" stream-oriented editor. It is stream-oriented because, like many UNIXprograms, input flows through the pr

各种语言版本的程序样例集

各种语言版本的程序样例集 以下样例程序可用于解决这道简单的题目:读入2个整数A和B,然后输出它们的和. awk (.awk) {print $1 + $2} bash (.sh) while read i; do echo $((${i/ /+})) done clang (.c) #include <stdio.h> int main() { int a, b; while(scanf("%d %d",&a, &b) != EOF) printf(&quo

Python Socket 编程——聊天室演示样例程序

上一篇 我们学习了简单的 Python TCP Socket 编程,通过分别写服务端和client的代码了解主要的 Python Socket 编程模型.本文再通过一个样例来加强一下对 Socket 编程的理解. 聊天室程序需求 我们要实现的是简单的聊天室的样例,就是同意多个人同一时候一起聊天.每一个人发送的消息全部人都能接收到,类似于 QQ 群的功能,而不是点对点的 QQ 好友之间的聊天.例如以下图: 图来自:http://www.ibm.com/developerworks/linux/tu

ADF Faces导出Excel文件【附样例工程】

本文提供一个基于ADF Face组件开发样例工程,工程的实现过程分为3个部分以应对Excel导出开发中常见的处理. 1.空模版文件下载:将Excel文件视为普通文件提供下载操作. 2.数据文件输出,将数据内容输出为Excel文件,目标文件尽在服务端内存中存在,这种方式需要对Excel文件的内容处理,需要引入响应的类库. 3.模版文件填充数据后下载,基于服务端的物理文件为模板,将业务数据填入约定位置后提供下载,在实现方面需要为工作簿对象指定源文件输入流,并完成后续内容处理. 实现的基本思路,由AD

学习sed,awk最好的路径

编写shell脚本的时候,最常用的便是sed,awk等工具. 如果没有一个好的学习路径,学起来会发现"知其然,不知其所以然".很多别人写的脚本看不懂. 其实,这里可能主要有一个学习路径的欠缺.学习sed之前,应该先了解ed,这个远古时代的文本编辑器,只有对它有了相应了解,才能知道为何那么写.