diff grep cut sort sed

来源:互联网 发布:软件项目保密协议范本 编辑:程序博客网 时间:2024/06/06 18:22
###########################
回顾

1. diff

diff  filename1 filename2

diff  -c filename1 filename2

diff  -u filename1 filename2

diff  -r directory1 directory2

[kiosk@foundation38 Desktop]$ diff file1 file2
4d3
< well done
[kiosk@foundation38 Desktop]$ diff -c file1 file2
*** file1    2016-11-07 21:06:39.165798725 +0800
--- file2    2016-11-07 21:07:07.733799573 +0800
***************
*** 1,4 ****
  good
  better
  best
- well done
--- 1,3 ----

参数 -c -u -r
2.patch file file.path
patch -b

#########################

3.grep

grep 关键字符 文件|目录         //显示文件|目录中查找包含关键字的所在行 
grep  -i   关键字符 文件|目录   //显示文件|目录中查找包含不区分大小写的关键字所在行
grep  -E  ' 关键字符 1|关键字符 2'    文件|目录  //查找多个关键字
grep  -n   关键字符 文件|目录  //显示文件|目录中查找包含关键字的所在行以及行号
grep  -c   关键字符 文件|目录  //计数在文件|目录中查找包含关键字的行数
grep  -r   目录                         //在目录中查找含有关键字的文件
grep  -v  关键字符 文件|目录   //在文件|目录中查找不包含关键字的所在行(反向过滤)
              ^关键字                      //以关键字开头
              关键字$                     //以关键字结尾
注意:后面的空格情况

[kiosk@foundation38 Desktop]$ grep  root file
test:hello:root
[kiosk@foundation38 Desktop]$ grep -E 'root|test' file
test:hello:root
Root:test:Hello
[kiosk@foundation38 Desktop]$ grep -E 'root|test' file -n
1:test:hello:root
2:Root:test:Hello关键字符 文件|目录
[kiosk@foundation38 Desktop]$ grep  -i -E 'root|test' file -n
1:st:hello:root
2:Root:test:Hello
[kiosk@foundation38 Desktop]$ grep  -i -E 'root|test' file -v -n
3:aaaaaa
4:AAAAAAAAAAA
5:bbbbb
6:CCCCCCCCCC
7:cdsdf
8:dsfasdfdf
9:

[kiosk@foundation38 Desktop]$ grep 'test$' file -c
1
###########################

4.cut   //选取

cut -c  字符范围  filename                //选取filename中所有行中字符范围的字符
cut -d  分隔符 -f  第几列数 filename //以分隔符划分,选取第几列
cut -f 1,7  filename                         //选取所有行中1到7个字符

[kiosk@foundation38 Desktop]$ cat file               //显示文件内容
test:hello:root
Root:test:Hello
root:TEst:hello
adad::test
[kiosk@foundation38 Desktop]$ cut -c 5 file       //选取文件所有行第五个字符
:
:
:
:
[kiosk@foundation38 Desktop]$ cut -c 4,6 file    //选取文件所有行第四个字符到第六个字符
th
tt
tT
d:
[kiosk@foundation38 Desktop]$ cut -d : -f 2 file  //以:划分,选取第二列的字符
hello
test
Test

awk

########################

5.sort

  -b   忽略每行前面开始出的空格字符。
  -c   检查文件是否已经按照顺序排序。
  -f   忽略大小写字母。
  -M   将前面3个字母依照月份的缩写进行排序。
  -n   依照数值的大小排序。
  -o<输出文件>   将排序后的结果存入指定的文件。
  -r   以相反的顺序来排序。
  -t<分隔字符>   指定排序时所用的栏位分隔字符。
  -k  选择以哪个区间进行排序。

[kiosk@foundation38 Desktop]$ cat file                   //查看源文件内容
12
53
46
28
26
59
23
45
46
45
aa
cc
dd
bb

[kiosk@foundation38 Desktop]$ sort file                //给文件内容排序

12
23
26
28
45
45
46
46

53
59
aa
bb
cc
dd
[kiosk@foundation38 Desktop]$ cat file                   //查看文件内容,发现原文件内容并未更改,所以上面的只是将  排序后的内容输出
12
53
46
28
26
59
23
45
46
45
aa
cc
dd
bb

[kiosk@foundation38 Desktop]$ sort -u file                 //忽略重复的

12
23
26
28
45
46

53
59
aa
bb
cc
dd
[kiosk@foundation38 Desktop]$ sort -r file                  //降序排序
dd
cc
bb
aa
59
53
46
46
45
45
28
26
23
12

[kiosk@foundation38 Desktop]$ sort -t : -k 2 file |uniq -c  //-t 分隔符 -k划分列 uniq -fc 统计行数
      1
      1 12
      1 23
      1 26
      1 28
      2 45
      2 46
      1 53
      1 59
      1 aa
      1 bb
      1 cc
      1 dd

#########################
6.uniq                                       //除去冗余行 
sort file |uniq -c                        //计数行数
sort file |uniq -d                        //显示冗余行

sort file |uniq -u                        //显示唯一行

[kiosk@foundation38 Desktop]$ sort file |uniq -c
      1
      1 12
      1 23
      1 26
      1 28
      2 45
      2 46
      1 53
      1 59
      1 aa
      1 bb
      1 cc
      1 dd
[kiosk@foundation38 Desktop]$ sort file |uniq -u

12
23
26
28
53
59
aa
bb
cc
dd
[kiosk@foundation38 Desktop]$ sort file |uniq -d
45
46

###################
7.sed
sed 's/原字符/替换字符/g'/s 全文 g/
sed -e //多个 显示
sed -i file//把转换后的内容输入到源文件
sed '3,5s/原/替换/g' filename  
sed 3d filename //屏蔽删除
sed -n 3p filename//只显示指定行

sed 3p filename//复制

[kiosk@foundation38 Desktop]$ cat passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
[kiosk@foundation38 Desktop]$ sed 's/root/hello/g' passwd
hello:x:0:0:hello:/hello:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt

[kiosk@foundation38 Desktop]$ cat passwd
hello:x:0:0:hello:/hello:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt

[kiosk@foundation38 Desktop]$ sed -e 's/halt/westos/g' -e 's/hello/binggo/g' passwd
binggo:x:0:0:binggo:/binggo:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
westos:x:7:0:westos:/sbin:/sbin/westos

[kiosk@foundation38 Desktop]$ sed '1,5s/bin/bong/g' passwd
hello:x:0:0:hello:/hello:/bong/bash
bong:x:1:1:bong:/bong:/sbong/nologin
daemon:x:2:2:daemon:/sbong:/sbong/nologin
adm:x:3:4:adm:/var/adm:/sbong/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbong/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
[kiosk@foundation38 Desktop]$ sed -n 3p passwd
daemon:x:2:2:daemon:/sbin:/sbin/nologin
[kiosk@foundation38 Desktop]$ sed 3p passwd
hello:x:0:0:hello:/hello:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin

adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt

#########################

awk

[root@localhost Desktop]# touch test
[root@localhost Desktop]# awk '/^$/ {print "Blank line"}' test
[root@localhost Desktop]# vim test
[root@localhost Desktop]# cat test








hello world
[root@localhost Desktop]# awk '/^$/ {print "Blank line"}' test
Blank line
Blank line
Blank line
Blank line

[root@localhost Desktop]# echo hello the world |awk '{print $1,$2,$3}'      //读取输入行字段1,2,3
hello the world
[root@localhost Desktop]# echo hello the world |awk '{print $0}'                
//读取输入行并输出
hello the world
[root@localhost Desktop]# echo hello the world |awk '{print $NF}'             //读取输入行并输出最后一个字段
world
[root@localhost Desktop]# echo hello the world |awk '{print NF}'               
//读取输入行并输出该行字段个数

3

[root@localhost Desktop]# awk 'BEGIN {FS=":"} {print $1} ' /etc/passwd   //以:划分,输出第一列
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
operator
games
ftp
nobody
avahi-autoipd
systemd-bus-proxy
systemd-network
dbus
polkitd
abrt
tss
unbound
usbmuxd
apache
colord
saslauth
libstoragemgmt
geoclue
rpc
postfix
setroubleshoot
rtkit
ntp
qemu
rpcuser
nfsnobody
radvd
chrony
sssd
pcp
pulse
gdm
gnome-initial-setup
avahi
sshd
oprofile
tcpdump
admin
test
liu                                            

内置变量:

NR 输入流的当前记录编号

NF当前记录

FS 字段分隔符

RS 输入记录分隔符,默认换行符\N

操作符:

-= 相减之后赋值给变量(x-=9)

~ 匹配

!~不匹配

&& 与

||或

#########################

#!/bin/bash
##读取用户个数$1
m=$(wc -l $1 |cut -d " " -f 1 )
##读取用户和帐号
for i in $(seq $m)
    do
        user=$(sed -n ${i}p  $1)
        useradd $i
        pw=$(sed -n ${i}p  $2)
        echo $pw |passwd  --stdin $user

done

##############################

0 0
原创粉丝点击