Chinaunix首页 | 论坛 | 博客
  • 博客访问: 11334
  • 博文数量: 9
  • 博客积分: 230
  • 博客等级: 二等列兵
  • 技术积分: 100
  • 用 户 组: 普通用户
  • 注册时间: 2010-12-27 11:58
文章分类
文章存档

2011年(8)

2010年(1)

我的朋友

分类: Python/Ruby

2011-01-11 21:24:20

对于初学shell的童鞋,必要的了解常用处理文本的工具还是很有帮组的。可以先了解以后再深入学习。
个人总结了些,可能不是很完整请多多包涵。
 cut:切断工具
cut -d: -f 1,3,4,5 /etc/passwd   -d是定义分隔符 -f显示的段数
 sed:  文本里进行替换作用
 先来看一道开胃菜:
 如果想在某个目录下生成新建备份文件的mkdir命令可以
find /home/ -type d -print|sed 's;/home/;/home_bak/;'|sed 's/^/mkdir '
sed 也支持反向引用
 echo /home/abc |sed 's;\(home\)/\(abc\);\1/\2_bak;'
当有多个匹配字符串需要替换时候可以使用-e
sed -e 's/a/b/' -e 's/c/d' file
这样写少量的情况下比较靠谱,但是如果多了话就很恐怖了,这时可以使用-f参数来执行文件里的替换
cat file.sed
s/aaa/bbbb/
s/cccc/ddd/
s/eee/fffff/
    sed -f file.sed file1  这样就比较靠谱了!
    sed -n '3,10' /etc/passwd  显示匹配的行
    sed '/foo/,/bar/ s/old/new/g'
 
join  根据两个文件相关联的字段进行合并
cat 1.txt      
joe 100
jane 200
herman 150
chris 300
cat 2.txt
joe 50
jane 75
herman 90
chris 95
#!/bin/sh
sed '/^#/d' 1.txt |sort > 1.txt.sorted
sed '/^#/d' 2.txt |sort > 2.txt.sorted
join 1.txt.sorted 2.txt.sorted
rm 1.txt.sorted 2.txt.sorted
 
sort -t: -k1.2,5.1 /etc/passwd  ---这里的.是指以第一个字段的第二个字符一直比较到第5个字段的第一个字符
举例:如比较的第一个字段的字母相同可以比较后面的字段
ab:aa
ab:ac
ab:ad
-r 降序(从大到校)
-n 以数字比较
-b 忽略开头的空白
-d 字典排序
-f 不区分大小写
-i 忽略无法打印的字符
sort -t: -k2n -k1n 1.txt  可以先以第二个字段开始排序 在按第一个字段排序
 
uniq: 合并重复的行
uniq -c 显示重复的行数
uniq -d 仅显示重复的行
uniq -u 仅显示未重复的行
 
以下是可以改变输出的格式
sed -n -e 1,100p /usr/share/dict/words |fmt -w 30
sed -n -e 1,100p /usr/share/dict/words |pr -c5 -t  ----   -c 以多少段 -t 省略标题行
     -s 切割较长的行
     -w 制定每行多少个字符
 
     wc -l 统计行数
     wc -c 统计字符数
     wc -w 统计单词数
 
写的比较简单,但是对于shell入门还是很有帮助
阅读(925) | 评论(0) | 转发(0) |
0

上一篇:关于perl fork

下一篇:printf 输出颜色

给主人留下些什么吧!~~