shell-字符处理

一些常用的字符或者文本处理命令

diff

比较两个文件的不同

1
[root@bogon diff]# diff file1 file2

以高亮的形式在vim编辑器中显示两个文件的不同之处

1
vimdiff

grep

用于匹配字符,或者查找文件中的匹配项

1
2
3
[root@bogon diff]# ls | grep file
file1
file2

重要参数

1
2
3
4
5
6
-i  #忽略大小写
-n #显示结果所在行的行号
-c #显示结果个数
-v #反向过滤
-r + 目录名 ###在目录下查找含有关键字的内容
-E "关键字1|关键字2" ###过滤多个关键字

sort

用于排序

1
2
3
4
5
-n  #纯数字
-r #倒序显示
-u #去掉重复行
-t #指定分隔符
-k #指定排序的列

用法实例
sort -t: -k3 -n /etc/passwd
将文本以:为分隔符,以第三列作为(uid)排序标准,-n表示排序是以纯数字来排,而不是以字母的顺序。

uniq

重复行处理,uniq只会认为连续的重复的行才是重复行。
若想删除掉所有的重复的行,可以先排序然后uniq

1
2
3
-c #统计重复行的个数
-d #显示重复行
-u #显示唯一行

tr

转换字符大小写
tr 'a-z' A-Z < 文件名 ##将所有的大写转换成大写
tr -d 关键字 文件名 ##将所有关键字删除

sed

1
2
3
4
5
6
7
8
9
10
sed 's/nologin/login/g' file    #将file文件中的所有nologin替换成login
sed '1,5s/nologin/login/g' file #将1-5行的所有nologin换成login
sed '/games/,/nobody/s/nologin/login/g' file #将games到nobody之间的nologin换成login
sed -e 's/nologin/login/g' -e 's/sbin/bin/g' #多条替换规则一起用
sed 3d file #不显示第三行
sed 3,7d file #不显示3-7行
sed 3,7p file #重复显示3-7行
sed -n 3,7p file #只显示3-7行
touch rule #建立规则文件
sed -f rule file #使用规则文件更改输出

以上的操作均不会对原本进行修改,若要直接修改,需要在前面加上-i参数

Contents
  1. 1. diff
  2. 2. grep
  3. 3. sort
  4. 4. uniq
  5. 5. tr
  6. 6. sed
,