cut 命令——简单的awk命令
参数 -d 指定分割符 -f 选取字段,每个字段用逗号分割
例:
[root@localhost /]# cat /etc/passwd | cut -d ':' -f 1,6
root:/root
bin:/bin
daemon:/sbin
adm:/var/adm
-----------------------------------------------------------
sort命令:根据字段排序
-f 忽略大小写
-r 逆序排列
-n 以数字大小排序(默认以字符排序)
-t 设置分割符(默认以tab分割)
-u uniq,相同数据仅出现一行
-k 以那个区间来排序
例子:读取用户信息文档并按照第三列(用户ID顺序排列)
[root@bogon 桌面]# cat /etc/passwd |sort -t ':' -k 3 -n
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
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
--------------------------------------------------------------------------------------------
tr(translate缩写)主要用于删除文件中的控制字符,或进行字符转换。
语法:tr [–c/d/s/t] [SET1] [SET2]
SET1: 字符集1
SET2:字符集2
-c:complement,用SET2替换SET1中没有包含的字符
-d:delete,删除SET1中所有的字符,不转换
-s: squeeze-repeats,压缩SET1中重复的字符
-t: truncate-set1,将SET1用SET2转换,一般缺省为-t
例子:删除空白行
#删除空白行就是删除换行符\n
#注意:这些空白行上只有回车符,没有空格符
$ cat test.txt
I love linux!
Hello World!
Shell is worthy to been studied
#这里用换行符的转义字符\n
#注意:此处用-s删除了多余的换行符,如果用-d,则会删除所有的换行符
$ cat test.txt | tr -s "[\012]"
I love linux!
Hello World!
Shell is worthy to been studied
例子:大小写切换
$ echo "Hello World I Love You" |tr [:lower:][:upper:]
HELLO WORLD I LOVE YOU
例子:把文档中所有的cat替换成dog
tr "cat" "dog" < animanl.data # 默认为 -t
使用tr字符串替换要注意一个问题,字符串的长度必须一致。假如 SET1长度小于SET2,SET2长度超出的字符会被丢弃,如果SET1长度大于SET2,则被替换的字符串只会部分被替换。 需要任意长度的字符串替换应使用sed。
-----------------------------------------------------------
wc
wc 可以统计文件或I/O 流中的单词数量.
wc -w 统计单词数量.
wc -l 统计行数量.
wc -c 统计字节数量.
wc -m 统计字符数量.
wc -L 给出文件中最长行的长度.
[root@localhost bin]# wc vm-support
323 1092 7702 vm-support #323行,1092个单词,7792个字符
[root@localhost bin]# wc -l vm-support
323 vm-support
[root@localhost bin]# wc -w vm-support
1092 vm-support
---------------------------------------------------------------------
head、tail只显示头、尾几行
[root@localhost etc]# head -n 3 /etc/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
[root@localhost etc]# tail -n 2 /etc/passwd
soso:x:502:50::/dev/null:/bin/false
ci:x:503:503::/home/ci:/bin/bash