zoukankan      html  css  js  c++  java
  • Shell命令学习笔记

    Shell命令学习笔记

      1. tr 替换字符

      简单示例: tr 'A' 'a' < file.txt

      把每一个A字符替换为a字符。tr命令只能用于单个字符的替换,如果写成:

      tr 'ABC' 'abc' < file.txt

      则表示分别把A,B,C字符替换为a,b,c,而不是把字符串ABC替换为abc,字符串的替换需要用到sed命令,稍候会有介绍。

      2. grep 字符串查找

      简单示例 :grep world file.txt

      在输入文件或这标准输入中查找含有匹配字符串(此处是world)的行,并显示改行。

      用grep处理后的结果往往会成为后续处理的输入,所以可以用管道进行连接:

      grep world file.txt | wc -l

       wc -l表示统计行数,上述命令表示统计file.txt文件中含有world字符串的行数。

      上述命令等于 grep -c world file.txt

      匹配多个条件,条件之间为或关系:

      grep 'a\|b' file.txt

      查找file.txt文件中所有含有a或者b的行

      如果需要显示不匹配模式的行,则只需要加-v 选项。

      3. sed(Stream Editor),流编辑器,一般用于执行文本替换。

      Sed是以批处理而不是交互的方式来编辑文件,sed并不会修改源文件,只会把修改的结果发送到标准输出或者写入另外一个文件。

      简单示例:sed 's/world/hadoop/' < file.txt

      把每行中的第一个world替换成hadoop。

      命令中引号内开头的s表示要执行替换,sed的用途很多,但是一般用于文本替换。

      主要选项:

      -e 当需要有多个不同的替换时,每个替换命令必须以-e开头:sed -e 's/world/hadoop/' -e 's/hello/hallo/' < file.txt

      -f 当命令比较复杂时,可以把sed命令写入一个脚本文件(文件中的命令不要加单引号),然后执行sed命令时只需用-f指向该脚本文件即可:sed -f sed.txt < file.txt

      -n 默认sed会把源文件的修改结果发送到标准输出(无论是否经过替换,都会发送),选项-n关闭该功能。-n一般和p组合使用,表示只打印替换过的行,其余的行不打印:sed -n 's/world/hadoop/p' < file.txt

      sed命令除了可以以p结尾之外,还可以以g结尾: sed 's/world/hadoop/g',表示全局替换,亦即对每行中所有匹配的文本进行替换,而不是仅仅替换第一个。

      sed命令以数字结尾表示替换每行的第n个匹配字符串: sed 's/world/hadoop/2'

      应用:

      删除文本中所有空行:sed '/^$/d' file.txt

     4. cut 选定字段

      cut用来剪下文本文件里指定的字段,字段是指以定界符分隔的字符串,常见的分隔符有空格,制表符以及冒号。

      简单示例:

      cut -d : -f 1,5 /etc/passwd

      剪取/etc/passwd文件的第1,5个字段(字段从1而不是0开始标号),定界符为冒号。

      cut -f 1-5 file

      剪取第一到第五个字段

      cut -f 1- file

      剪取第一个到最后一个字段

      5. sort  排序工具

      sort将输入的每行看做一条记录,每条记录由多个字段组成,字段间以空白字符为间隔。

      简单示例:

      sort -t: -k1,1 /etc/passwd

      以:为间隔符,以第一个字段为排序字段对文件中的记录进行排序

      可以制定排序键值字段的类型,比如:

      sort -t: -k1,1nr /etc/passwd

      n是指把排序字段当做数值而不是字符串进行比较,如果指定了n,则2排在10前面,否则10排在2前面。

      r是指逆序

      其他常用的的排序键值字段类型为:

      b 忽略开头的空白

      f 不区分大小写

      另外,如果k后只写了一个数字,比如-k2,则意味着排序键值为第二个字段及其以后的所有字段,而不仅仅是第二个字段,如果只想用第二个字段作为排序键值,则应该使用-k2,2。

      当出现多个-k选项时,意味着首先用第一个k选项指定的键值进行排序,然后对第一个键值相同的一组记录使用第二个键值排序,以此类推。

      最后,sort的排序是不稳定的。

      6. wc WordCount工具

      wc用来进行计数:

      wc -c file.txt 统计字节数

      wc -w file.txt 统计单词数

      wc -l file.txt 统计行数

      如果不指定任何选项,则是依次输出行数,单词数,字节数。

      7. head tail  取得文件开头或者结尾数行

      head -n file.txt 输出文件的前n行

      tail -n file.txt  输出文件的后n行

      tail -n -f file.txt  输出文件的后n行,在文件有新的数据加入时显示新的数据(对查看log文件非常有用)

      8. Uniq 删除重复

      用例子说明,设文件file.txt内容为:

    a 1
    b 1
    c 2
    d 2
    e 3

      则执行uniq -f 1 file.txt的结果为

    a 1
    c 2
    e 3

       执行uniq -u -f 1 file.txt的结果为

       e 3

      9. split 切分文件

      split -l 100 file.txt 把文件file.txt按照100行为单位切分成数个文件,切分后的文件命名为xaa,xab,...

      split -b 200k file.txt 把文件file.txt按照200KB为单位进行切分,切分后的文件命名为xaa,xab,...

      参考文献:

    [1] Shell脚本学习指南 

  • 相关阅读:
    010 --- 第14章 观察者模式
    009 --- 第13章 建造者模式
    008 --- 第12章 外观模式
    007 --- 第10章 模板方法模式
    006 --- 第9章 原型模式
    redis lua 中keys[1] 和argv[1] 的理解
    redis 入门总结
    mysql 8.0 特性简单总结
    MySql事务隔离级别 浅见
    浅谈Java中的String、StringBuffer、StringBuilder
  • 原文地址:https://www.cnblogs.com/kemaswill/p/2743503.html
Copyright © 2011-2022 走看看