zoukankan      html  css  js  c++  java
  • Linux Shell编程(23)——文本处理命令

    处理文本和文本文件的命令


    sort
    文件排序, 通常用在管道中当过滤器来使用. 这个命令可以依据指定的关键字或指定的字符位置, 对文件行进行排序. 使用 -m 选项, 它将会合并预排序的输入文件. 想了解这个命令的全部参数请参考这个命令的 info 页. 见 Example 10-9, Example 10-10, 和 Example A-8.


    tsort
    拓扑排序 ,读取以空格分隔的有序对, 并且依靠输入模式进行排序.


    uniq
    这个过滤器将会删除一个已排序文件中的重复行.这个命令经常出现在 sort命令的管道后边 .


    expand, unexpand
    expand 将会把每个tab转化为一个空格.这个命令经常用在管道中.


    unexpand 将会把每个空格转化为一个tab.效果与 expand 相反.


    cut
    一个从文件中提取特定域的工具. 这个命令与 awk 中使用的 print $N命令很相似, 但是更受限. 在脚本中使用cut命令会比使用 awk 命令来得容易一些. 最重要的选项就是 -d (字段定界符) 和 -f (域分隔符) 选项.


    grep
    使用 正则表达式 的一个多用途文本搜索工具. 这个命令本来是 ed 行编辑器中的一个命令/过滤器: g/re/p -- global - regular expression - print.


    grep pattern [file...]


    在文件中搜索所有 pattern 出现的位置, pattern 既可以是要搜索的字符串,也可以是一个正则表达式.
    -i 选项在搜索时忽略大小写.
    -w 选项用来匹配整词.
    -l 选项仅列出符合匹配的文件, 而不列出匹配行.
    -r (递归) 选项不仅在当前工作目录下搜索匹配, 而且搜索子目录.
    -n 选项列出所有匹配行, 并显示行号.


    #!/bin/bash
    # grp.sh: 一个非常粗糙的 'grep' 的实现.
    
    
    E_BADARGS=65
    
    
    if [ -z "$1" ]    # 检查传递给脚本的参数.
    then
      echo "Usage: `basename $0` pattern"
      exit $E_BADARGS
    fi  
    
    
    echo
    
    
    for file in *     # 遍历 $PWD 下的所有文件.
    do
      output=$(sed -n /"$1"/p $file)  # 命令替换.
    
    
      if [ ! -z "$output" ]           # 如果"$output" 不加双引号将会发生什么?
      then
        echo -n "$file: "
        echo $output
      fi              #  sed -ne "/$1/s|^|${file}: |p"  这句与上边这段等价.
    
    
      echo
    done  
    echo
    exit 0





  • 相关阅读:
    统计一个字符串中字母、空格和数字的个数
    java 将一个数组中的值按逆序重新存放,例如,原来顺序为:9,5,7,4,8,要求改为:8,4,7, 5,9。
    java判断一个数是否为素数[转]
    Set集合
    List&ArrayList&LinkedList
    java_异常
    内部类&匿名内部类
    多态&抽象类&接口
    数组排序和字符串
    Java笔记_数据类型和运算符
  • 原文地址:https://www.cnblogs.com/new0801/p/6176857.html
Copyright © 2011-2022 走看看