回顾
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 ----
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
########################
-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
##############################