常见Shell命令用法总结

MaricelaCra 9年前

来自: http://www.cnblogs.com/linuxer/p/3260329.html


常见命令用法总结 

-----  目录:  ---

  1. 关于grep的总结  
  2. 关于egrep的总结  
  3. 关于tr的总结 
  4. 关于sort的总结  
  5. 关于uniq的总结  
  6. 关于cut的总结  
  7. 关于tee的总结  
  8. 关于split的总结
  9. 关于type的使用  
  10.  关于find的使用  
  11. 关于xargs的使用   



关于grep的总结
找出所需字符串的时候可用引号也可以不用引号。 
grep bc test  grep "bc" test  grep 'bc' test

注:以上3中形式都能找出test文件中相对应含有字符串bc的行并打印出来。
比较常用的参数有;
-i, --ignore-case         忽略大小写  -n, --line-number         print line number with output lines  -v, --invert-match        select non-matching lines 显示不匹配的行  -h, --no-filename         suppress the prefixing filename on output查询多文件时不显示文件名  -l, --files-with-matches  print only names of FILEs containing matches查询多文件时只显示文件名  grep select * ,               列出当前目录下所有包含select 字样的文件名及含有select字样的行。  grep -h select * ,          和上一条相似,但不显示文件名称。  grep -l select * ,           和第一条相似,但只显示文件名。



 
2、关于egrep的总结
egrep 是扩充功能的grep  egrep ‘2|5’ 1.txt ,列出含有2或者5的行  egrep '12(@|3)' test 列出含有12且后面紧跟@或3的行




3、关于tr的总结

从标准输入中替换、缩减和/或删除字符,并将结果写到标准输出。

-s, --squeeze-repeats  如果匹配于SET1 的字符在输入序列中存在连续的重复,在替换时会被统一缩为一个字符的长度  tr test '12' '45' 将文件中的12替换为45   cat test |tr '[a-z]' '[A-Z]' 将文件中的小写全部替换为大写  tr ' ' '\n' <test 把test文件中的所有空格替换为换行  tr -s ' ' ' ' <test 把test文件中每行中连续出现的空格替换为一个空格




4、关于sort的总结

sort [选项]... --files0-from=F 

串联排序所有指定文件并将结果写到标准输出。


-c, --check, --check=diagnose-first 检查输入是否已排序,若已有序则不进行操作  -r, --reverse 逆序输出排序结果   -n, --numeric-sort 根据字符串数值比较  -k, --key=位置1[,位置2] 在位置1 开始一个key,在位置2 终止(默认为行尾)   -u, --unique 配合-c,严格校验排序;不配合-c,则只输出一次排序结果




  5、关于uniq的总结
uniq对重复的行只保留一行。 【注意】对于处理字符长的时候一般先sort然后再uniq。
-c, --count 在每行前加上表示相应行目出现次数的前缀编号  -d, --repeated 只输出重复的行



  
6、关于cut的总结
cut 主要的用途在于将一行里面的数据进行分解,最常使用在分析一些数据或文字数据的时候!
这是因为有时候我们会以某些字符当作分割的参数,然后来将数据加以切割,以取得我们所需要的
数据。
cut  -d" " -f1  test 以空格为分割符,并输出第一列  last | cut -c1-20 //将 last 之后的数据,每一行的 1-20 个字符取出来








7、关于tee的总结
将数据输出重定向到文件的时候,屏幕上就不会出现任何的数据!那么如果我们需要将数据同时
显示在屏幕上跟档案中呢?这个时候就需要 tee 这个指令。
last |tail |tee last.list | cut -d " " -f1 将last的最后10行写进last。last文件并接着处理并输出在屏幕。





8、关于split的总结
将大的文件分割成小的文件。
-l, --lines=数值 指定每个输出文件有多少行  -C, --line-bytes=大小 指定每个输出文件里最大行字节大小



 
9、关于type的使用
type打印一个命令的绝对路径
[guo@guo ~]$ type vim  vim is hashed (/usr/bin/vim)  [guo@guo ~]$ type perl  perl is /usr/bin/perl



  
10、关于find的使用
find /home/guo/  -name  test找出文件夹guo中的test文件  find / -name “*apple* -print  find /home –name “[!abc]”  find /home –name “?[1-9]”  find / -type d(f b c l p)  find / -mtime -5 查找最后修改小于5天的文件  -mtime   文件修改时间//vi、echo修改文件会改变此文件时间  -atime  文件访问时间//用cat、vi查看会改变此文件时间  -ctime   文件改变时间// vi 、echo修改文件、chmod、chown会改变此文件时间  stat fileanme    查看以上3个时间



  
11、关于xargs的使用 

xargs从标准输入中接受单词列表的命令,并把这些单词作为参数传递给指定的命令


ls |xargs rm//把ls列出的内容再通过rm删除  可以每次删除一部分文件  ls |xargs –n 2 rm  ls | xargs –n 2 echo “==>”  有时目录里文件太多了不能使用rm *删除这时  ls | grep ‘^abc’ |xargs –n 20 rm



 
12、关于bc的使用
bc命令:进行算术运算,但不限于整数运算  scale=4 //表示计算结果保留4位小数  bc还可以用在shell变量赋值中  ABC=`echo “scale=4;8/3” | bc`  echo $ABC


 

 
脚本编程
1.1.1.1 www.baidu.com
2.2.2.2 www.baidu.com
3.3.3.3. www.sina.com.cn
2.2.2.2 www.chinauxin.net
2.2.2.2 www.51cto.com
1.1.1.1 www.linuxtone.org




输出
2.2.2.2 www.baidu.com,www.chinauxin.net,www.51cto.com
1.1.1.1 www.baidu.com,www.linuxtone.org
3.3.3.3. www.sina.com.cn
 awk '{a[$1]=a[$1]" "$2}END{for(i in a)print i,a[i]}' file








创建html文件  ::cat 运维必备.html  |sed -e '/^$/d'|sed  -n  '2,$ s/^/\<br\>/p' |sed 's/$/\<\/br\>/' >a.html




 内核、Shell、文件系统这三个部分构成了linux系统




 合并两个文件
paste 1 2|awk '{if($1 ~$2) print $1 ;else print $0}' 




 a=date +"%Y-%m-%d &nbsp;%H : %M : %S" -d "5 min ago"