1. 环境
vim ahappychild.txt
My hose is red - a little house;
A happy child am I.
I laugh and play the whole day long,
I hardly ever cry.
I have a tree, a green, green tree,
To shade me from the sun;
And under it I often sit,
When all my play is done.
vim sortuniq.txt
Canepa,Gabriel:20140808:15
Doe,John:20140325:30
Null,Dave:20141009:5
Doe,John:20140324:30
Null,Dave:20140709:5
Canepa,Gabriel:20140808:15
Doe,John:20140311:30
Null,Dave:20141009:5
Doe,Jane:20140510:10
Canepa,Gabriel:20140608:15
Doe,john:20140324:30
2. sed
1. 将小写y替换成大写Y,输出到ahappychild2.txt
sed 's/y/Y/g' ahappychild.txt > ahappychild2.txt
2. 我们要用一个符号来替换一个文字,与此同时我们将把一行最开始出现的第一个 I 替换为 You。
如果要在替换文本中搜索或者替换特殊字符(如 /,\,&),需要使用反斜杠对它进行转义。
sed 's/and/\&/g;s/^I/i/g' ahappychild.txt
3. 将会显示 /var/log/messages 中从12月13日开始的头五行。
sed -n '/^Dec 13/p' /var/log/messages|sed -n 1,5p
4. 取消开头注释和空行
sed '/^#\|^$/d' /etc/selinux/config
3. uniq
uniq 命令允许我们返回或者删除文件中重复的行,默认写到标准输出。我们必须注意到,除非两个重复的行相邻,否则uniq 命令不会删除他们。因此,uniq 经常和一个前置的 sort 命令(一种用来对文本行进行排序的算法)搭配使用。默认情况下,sort 使用第一个字段(用空格分隔)作为关键字段。要指定一个不同的关键字段,我们需要使用 -k 选项。
1. 查看linux每天产生的日志数
cat /var/log/messages |uniq -c -w 6
2. 查询有多少个捐赠者
cat sortuniq.txt |cut -d: -f1|sort|uniq
4. tr
tr 命令可以用来从标准输入中转换(改变)或者删除字符,并将结果写入到标准输出中。
1. 小写变大写
cat sortuniq.txt | tr [:lower:] [:upper:]
2.输出中的分隔符为一个空格。
cd /
ls -l |tr -s ' '
5. cut
1. 从 /etc/passwd 中提取用户账户和他们被分配的默认 shell(-d 选项允许我们指定分界符,-f 选项指定那些字段将被提取)。
cat /etc/passwd |cut -d: -f1,7
6. 综合实例
1. 能过last查询root用户的IP登陆情况(去重)
last|grep root|tr -s ' '|cut -d' ' -f1,3|sort -k2|uniq -c