Linux命令----sed和awk

sed

-n :加上-n参数后,只有经过sed特殊处理的哪一行或者动作才会被列出来。

动作说明:[n1,n2[function]]

function :

a:新增,a的后面可以接字符串,而这些字符串会在新的一行出现(目前的下一行)

c:取代,c的后面可以接字符串,这些字符串可以取代 n1,n2 之间的行

d:删除,d后面通常不接任何东西;

i:插入,i后面可以接字符串,而这些字符串会出现在新的一行(目前的上一行)

p:列印,

s:取代,可以直接进行取代的工作,通常这个s的动作可以搭配正则表示法

[[email protected] ~]# nl passwd | sed  ‘2,5d‘     #删除文件2-5行
[[email protected] ~]# nl passwd | sed -n ‘2p‘    #显示文件第二行 加-n
     2     bin:x:1:1:bin:/bin:/sbin/nologin
[[email protected] ~]# nl passwd | sed  ‘2p‘        #不加-n 会显示全部文件
[[email protected] ~]# nl passwd | sed  ‘2a lulalaldemaxiya‘    #在第二行后面追加一行
[[email protected] ~]# nl passwd | sed  ‘2i lulalaldemaxiya‘     #在第二行前面追加一行
[[email protected] ~]# nl passwd | sed ‘2,5c No 2-5 number‘  #将第2-5行取代为No 2-5 number
1     root:x:0:0:root:/root:/bin/bash
No 2-5 number
6     sync:x:5:0:sync:/sbin:/bin/sync
[[email protected] ~]# nl passwd | sed -n ‘/root/p‘      #显示匹配到的行

数据的搜寻并替换

[[email protected] ~]# ifconfig | sed -n ‘2p‘|sed ‘s/^.*addr://‘|sed ‘s/ Bca.*//‘   #ifconfig只显示ip
192.168.3.139

多点编辑

[[email protected] ~]# nl /etc/passwd|sed -e ‘3,$d‘ -e ‘s/bash/blueshell/‘
     1     root:x:0:0:root:/root:/bin/blueshell
     2     bin:x:1:1:bin:/bin:/sbin/nologin
删除/etc/pass 第三行到末尾的数据,并把bash替换为blueshell
-e 表示多点编辑


awk

[[email protected] ~]# last -n 5 |awk ‘{print $1}‘
root
reboot
root
reboot
root

awk工作流程是这样的,读入有‘\n’换行符分割的一条记录,然后将记录按指定的域分割符划分域,$0

则表示所有域,$1表示第一个域,$n表示第n个域。默认域分隔符是“空白键”或 “【tab】建”,所以$1

表示登录用户,$3表示登录用户ip

[[email protected] ~]# cat passwd | awk -F ‘:‘ ‘{print $1 "\t" $7}‘
root     /bin/bash
bin     /sbin/nologin
daemon     /sbin/nologin
adm     /sbin/nologin
lp     /sbin/nologin

-F 指定域分割符为‘;’  并输出  账户 和 账户对应的shell。

[[email protected] ~]# head -n 5 passwd | awk -F ‘:‘ ‘BEGIN{print "name,shell"} {print $1 "," $7} END{print "end,line"}‘

name,shell
root,/bin/bash
bin,/sbin/nologin
daemon,/sbin/nologin
adm,/sbin/nologin
lp,/sbin/nologin
end,line
[[email protected] ~]# awk -F : ‘{print "filename:",FILENAME",linenumber:"NR ",columns:"NF ",linecontent:" $0}‘ passwd

显示文件passwd 文件名FILENAME 已读的记录数(行数)NR    浏览记录的域的个数(列数)NF 显示完整的行内信息$0
[[email protected] ~]# head -n 5 passwd | awk -F : ‘{count++;print $1;} END{print "user count is ",count}‘
 

[[email protected] ~]# ls -l | awk ‘BEGIN{size=0;}{size=size+$5;} END{print "[end]size = ",size}‘

[[email protected]
 ~]# ls -l | awk ‘BEGIN{size =0;print "[start]size 
is",size}{if($5!=4096) {size=size+$5;}} END{print "[end]size 
is",size/1024/1024,"M"}‘

[[email protected] ~]# awk -F : ‘BEGIN{count=0;}{name[count]=$1;count++;};END{for(i=0;i<NR;i++) print i,name[i]}‘ passwd

去重  |sort(升序)| uniq -c |  sort -r (降序)
时间: 2024-10-17 18:56:06

Linux命令----sed和awk的相关文章

[ Linux命令 ] sed

一.sed是什么? Linux sed命令是利用script来处理文本文件. sed可依照script的指令,来处理.编辑文本文件. Sed主要用来自动编辑一个或多个文件:简化对文件的反复操作:编写转换程序等. 二.sed基本语法 sed基本用法: sed: 流编辑器,行编辑器 ( 全屏编辑器:vim ) 模式空间:默认不编辑源文件,仅对模式空间中的数据做处理 sed [option]'AddressCommand' file ... -n: 静默模式    不再默认显示模式空间中的内容    

Linux 命令---- sed

sed 命令:  常用场景:1. 在指定位置增加内容2. 删除指定字符所在的行:3. 替换指定字符串为新的字符串:4. 只显示包含指定字符的内容 Answer:-i: 表示将修改直接持久化到文件中1.>sed -i '/test/a\one\ntwo' test.txt // 在存在test字符串的行后添加one 然后换行添加two 注: 不用加 g选项 就默认把符合条件的都加入 a\ 后面的内容 加入一行默认是自动换行:最后一行不用加 \n >sed -i '#test_3#a\two' t

Linux结合sed和awk打印文件权限

问题: 过滤出stat /etc/hosts的权限值 法1: [[email protected] ~]# stat /etc/hosts|sed -n '4p'|awk -F '[0/]' '{print $2}' 644 注: Awk里的[0/]表示 Access: (0644/-rw-r--r--) 法2: [[email protected] ~]# stat /etc/hosts|awk -F '[0/]' 'NR==4 {print $2}' 644 法3: [[email prot

linux命令-sed,uniq,cut,wc

sort sort 命令对 File 参数指定的文件中的行排序,并将结果写到标准输出.如果 File 参数指定多个文件,那么 sort 命令将这些文件连接起来,并当作一个文件进行排序. sort语法 [[email protected] ~]# sort [-fbMnrtuk] [file or stdin] 选项与参数: -f :忽略大小写的差异,例如 A 与 a 视为编码相同: -b :忽略最前面的空格符部分: -M :以月份的名字来排序,例如 JAN, DEC 等等的排序方法: -n :使

Linux命令sed

sed流编辑器:Stream EDitor sed行编辑器,使用sed,将文件的行加载到内存,符合sed模式空间的显示到屏幕上,sed默认不编辑文件,仅对模式空间的数据处理,处理结束后,将符合模式空间的行打印到屏幕上 sed模式空间 sed [options选项] 'AddressCommand' file ... options: 选项,如 -n静默模式,只显示符合条件的行,不显示模式空间的内容 Address: 指的是文件行的地址,如第一行到第10行 Command: 指的是对文件行的操作,

Linux 常用命令sed/awk/grep及正则表达式

linux命令sed和awk sed 主要功能 sed,stream editor.是一个"非交互式"字符流编辑器.输入流通过程序并输出到标准输出端. sed主要用来自动编辑一个或者多个文件(替换,插入,删除,追加,更改) 常见应用 抽区域 匹配正则表达式 比较域 增加,附加,替换 执行过程 sed一次处理一行或多行内容.处理时,把当前处理的行存储在临时缓冲区中,称为"模式空间"(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区

Linux运维三剑客awk必会知识--模式与操作、内自变量、语句块、数组

Linux命令之三剑客awkawk简介awk是三剑客中的老大,awk强大之处在于,它不仅仅是命令,还是一门语言,功能非常强大.报告生成器,格式化后显示,可以自定义函数:awk的处理对象是记录与字段(域).awk处理数据的原理读取到数据后,首先将数据分片,默认是以空格为分隔符,分片后给每个分片引用位置变量参数,然后按照awk命令的条件打印记录与字段在讲awk参数.内置变量.数组之前,首先讲一下什么是记录,什么是字段?字段很好理解,就是默认以空格为分割符分片后的区域,每个区域就是一个字段,就像上面的

linux下的文本处理命令sed&amp;awk&amp;grep

Sedsed 是个精简的.非交互式的编辑器.他能执行和编辑vi和emacs相同的编辑任务.sed编辑器不提供交互使用方式:只能在命令行输入编辑命令.指定文件名,然后在屏幕上察看输出.sed编辑器没有破坏性.他不会修改文件,除非用shell重定向来保存输出结果.缺省情况下,所以的输出都被打印到屏幕上.sed 编辑器在shell脚本中非常有用,因为在shell脚本中使用像vi或emacs这类交互式编辑器,需求脚本用户精通该编辑器,而且还会导致用户对打开 的 文件做出不必的修改.如果需要执行多项编辑任

利用多核CPU来加速Linux命令 — awk、sed、bzip2、grep、wc

你是否曾经有过要计算一个非常大的数据(几百GB)的需求?或在里面搜索,或其它操作--一些无法并行的操作.数据专家们,我是在对你们说.你可能有一个4核或更多核的CPU,但我们合适的工具,例如 grep, bzip2, wc, awk, sed等等,都是单线程的,只能使用一个CPU内核.借用卡通人物Cartman的话,"如何我能使用这些内核"?要想让Linux命令使用所有的CPU内核,我们需要用到GNU Parallel命令,它让我们所有的CPU内核在单机内做神奇的map-reduce操作