linux---sed,awk

来源:互联网 发布:来疯直播怎么样 知乎 编辑:程序博客网 时间:2024/06/08 02:13

sed

sed [-nefr] [动作]

-n   使用安静模式

-e   直接在指令列模式进行sed的动作编辑

-f    执行指定档案的sed动作

-r   

n1,n2  指定行数执行

a   新增字符串

c  取代字符串

d 删除

i  插入字符串

p 打印

s 取代






awk

处理每一行的字段内的数据

awk  ' 条件类型1{动作1} 条件类型2{动作2}  。。。'   filename

NF    每行($0) 拥有的字段总数

NR   目前awk所处理的是 第几行数据

FS   目前分隔字符,预设是空格键


[test@localhost test_shell]$ last -n 5 | awk  '{print $1}'
root
root
root
root
root
wtmp


[test@localhost test_shell]$ cat /etc/passwd |awk  -F ':'  '{print $1}'
root
bin
daemon
adm
lp


[test@localhost test_shell]$ cat /etc/passwd |awk  -F ':'  '{print $1"\t"$7}'
root    /bin/bash
bin     /sbin/nologin
daemon  /sbin/nologin
adm     /sbin/nologin
lp      /sbin/nologin
sync    /bin/sync

[test@localhost test_shell]$ head -n 5 /etc/passwd |awk  -F ':'  'BEGIN {print "name,shell"}  {print $1","$7} END {print "blue,/bin/nosh"}'     
name,shell
root,/bin/bash
bin,/sbin/nologin
daemon,/sbin/nologin
adm,/sbin/nologin
lp,/sbin/nologin
blue,/bin/nosh

[test@localhost test_shell]$ awk  -F ':'  '{print "filename:" FILENAME ",linenumber:" NR ",columns:" NF ",linecontent:"$0}' /etc/passwd
filename:/etc/passwd,linenumber:1,columns:7,linecontent:root:x:0:0:root:/root:/bin/bash
filename:/etc/passwd,linenumber:2,columns:7,linecontent:bin:x:1:1:bin:/bin:/sbin/nologin
filename:/etc/passwd,linenumber:3,columns:7,linecontent:daemon:x:2:2:daemon:/sbin:/sbin/nologin
filename:/etc/passwd,linenumber:4,columns:7,linecontent:adm:x:3:4:adm:/var/adm:/sbin/nologin
filename:/etc/passwd,linenumber:5,columns:7,linecontent:lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
filename:/etc/passwd,linenumber:6,columns:7,linecontent:sync:x:5:0:sync:/sbin:/bin/sync


[test@localhost test_shell]$ awk -F ':' 'BEGIN {count=0;} {name[count] = $1;count++;}; END{for (i = 0; i < NR; i++) print i, name[i]}' /etc/passwd
0 root
1 bin
2 daemon
3 adm
4 lp
5 sync








0 0
原创粉丝点击