对于初学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) |