• linux文本处理命令


    cat、tac、more、less、head、tail、cut、sort、job、uniq、wc、diff、tr、sed、grep、awk
    cat命令
    选项
    -n 显示行号
    -E 显示行结束符 (Linux系统的文本文件的结束符是\(, windows系统的文本文件的结束符是\)+Enter)
    -T 显示制表符
    -A show-all
    tac命令 反过来显示文本内容
    more命令

    内部指令
        空格键   滚动到下一屏内容
        Enter键    滚动到下一行内容
        B键        向上滚动一屏内容
        Q键        退出       
    

    less命令
    内部指令和vim内部指令一样

    head命令
    选项
    -n<数字>:指定显示头部内容的行数;也支持 head -NO. FILENAME

    tail命令
    -n<数字>:指定显示尾部内容的行数;也支持 head -NO. FILENAME
    -f 动态显示文件尾部内容变化(监视日志文件)
    cut命令
    -d:指定字段的分隔符,默认的字段分隔符为空格
    -f:显示指定字段的内容;
    job命令

    sort命令(不对源文件做处理只是显示排序,依据ASII表中的次序升序排列)
    -n:依照数值的大小排序;
    -d 按字典顺序排序
    -o<输出文件>:将排序后的结果存入制定的文件;
    -r:以相反的顺序来排序;
    -t<分隔字符>:指定排序时所用的栏位分隔字符
    -k 选择以哪个区间进行排序。
    -u 排序之后相同行只显示一次
    -f 排序时忽略字符大小写

    uniq命令 (只处理相邻的重复行)
    -d 只显示重复的行
    -c 显示重复行的次数
    wc命令 (word count)
    -c 统计文本中的字节
    -l 统计文本中的行数
    -w 统计文本中的单词数
    -L 统计最长一行包含多少个字符
    diff (vim -d 或 vimdiff 比较两个文件内容 )
    diff [OPTION] 文件1 文件2
    -q 仅显示有无差异,不显示详细的信息
    -c 显示全文内文,并标出不同之处
    -b 不检查空格字符的不同
    -B 不坚持空白行
    -r 比较子目录中的文件
    tr命令 (字符处理命令)用于转换或删除字符
    tr [OPTION]... set1 [set2]
    -d 删除出现在字符集中的所有字符
    grep,egrep,fgrep-不支持正则表达式
    根据模式搜索文本,并将符合模式的文本行显示出来
    Pattern: 文本字符和正则表达式的元字符组合而成的匹配条件
    grep [OPTIONS] PATTERN [FILE...]
    -i ignore 忽略大小写
    --color 高亮颜色显示
    -v 取反
    R, -r, –recursive 在某一目录下递归[所有子目录]查找某一字串:
    -o 只显示被模式匹配的关键字符串
    -E 使用扩展正则表达式
    -A n 显示匹配到的行及其后面的n行 after
    -B n 显示匹配到的行及其前面的n行 before
    -C n 显示匹配到的行及其前后的n行 context
    基本正则表达式 REGEXP REGular EXPression

    元字符:
    . :匹配任意单个字符
    [] 匹配指定范围内的任意单个字符
    [^] 匹配指定范围外的任意字符
    字符集合: [:digit:] [:lower:] [:upper:] [:alpha:] [:alnum:] [:space:] [:punct:]

    匹配次数:(贪婪模式-尽可能长的匹配)
    ?:匹配其前面字符0或1次
    :匹配其前面的字符任意次数
    .
    : 匹配任意长度的任意字符(.*表示任意多个任意单个字符,即任意字符)
    {m,n}: 匹配其前面的字符至少m次,至多n次 ({m,} 表示至少出现m次 {,n} 表示最多出现n次 {Y} 表示出现Y次)

    位置锚定:
    ^: 锚定行首,此字符后面的任意内容必须出现在行首
    \(: 锚定行尾,此字符前面的任意内容必须出现在行尾 ^\): 空白行
    <或\b 锚定词首,其后面的任意字符必须作为单词首部出现
    >或\b 锚定词尾,其前面的任意字符必须作为单词尾部出现

    分组 (KEY) KEY看做一个整体
    后向引用
    \1 引用第一个左括号以及与之对应的右括号所包括的所有内容
    \2 引用第二个左括号以及与之对应的右括号所包括的所有内容
    & 引用模式匹配整个串

    扩展正则表达式
    字符匹配 次数匹配以及其他和基本正则表达式相同
    不同的如下:
    + 匹配其前面的字符一次或多次
    {m,n} 匹配其前面的字符至少m次,至多n次 (不需要大括号)
    ()分组 (不需要斜线转义)
    | 或者 ( a | b 表示a 或者b字符串 表示竖线的左边或右边 整体)

    sed ( Stream EDitor)
    sed 基本用法;(逐行处理,默认不修改原文件,仅对模式空间中的数据做处理,处理结束后,将模式空间 打印至屏幕)
    sed [OPTIONS] ‘AddressCommand’ file ...
    -n 静默模式,不再默认显示模式空间的内容
    -i 直接修改原文件
    -e 多项使用 -e SCRIPT -e SCRIPT
    -f /PATH/TO/SED_SCRIPT
    -r 支持扩展正则表达式
    Address:
    1、StartLine,EndLine
    1,100
    \(: 最后一行 2、/RegExp/ /^root/ 以root为开头的行 3、/pattern1/,/pattenrn2/ 第一次被pattern1匹配到的行开始,至第一次被pattenrn2匹配到的行结束,这中间的所有行 4、LineNumber 指定的行 5、StartLine,+N 从StartLine开始,向后的N行 Command: d 删除匹配的行 D-首次出现的行删除 p 显示符合条件的行 a \string 在指定的行后面追加新行,内容为string i \string 在指定的行前面追加新行,内容为string r FILE 将指定的文件的内容添加至符合条件的行处 w FILE 将地址指定范围内的行另存至指定的文件中 s/pattern/string/ 查找并替换(默认只替换每行中第一次被模式匹配到的字符串) s///中的/分割符也可以使用其他的(如s###,s@@@) 加修饰符: g:全局替换 s/pattern/sting/g i: 忽略字符大小写 也可以 后向引用 \(\),\1,\2 &:引用模式匹配整个串 awk 每次只读取一行操作 默认以空白符作为分隔符 以位置变量(\)N) 引用
    awk [options] 'script' file1 file2 …
    awk [options] 'PATTERN {action}' file1 file2 …
    print
    print使用格式:
    print item1,item2,……
    要点:
    1、各项目之间使用逗号分隔,而输出时则以空白字符分隔
    2、输出的item可以为字符串或数值,当前记录的字段(如$1),变量或awk的表达式,数值会先转换为字符串,而后再输出
    3、print 命令后面的item可以省略,此时其功能相当于print $0 ,因此,如果想输出空白行,则需要使用print “ ”
    例如:
    awk ‘BEGIN {print "line one\nline two\nline three"}'
    awk -F: '{print $1,$2}' /etc/passwd
    printf
    prinrf 命令的使用格式
    printf format, item1,item2……
    要点
    1、其与print命令的最大不同是,printf需要指定formart;
    2、format 用于指定后面的每个item的输出格式
    3、printf 语句不会自动打印换行符: 常以\n作为换行操作符
    formart格式的指示符都以%开头,后跟一个字符:
    %c 显示字符的ASCII码
    %d,%i 十进制整数
    %e,%E 科学计数法显示数值
    %f 显示浮点数
    %g,%G 以科学计数法的格式或浮点数的格式显示数值
    %s 显示字符串
    %u 无符号整数
    %% 显示%自身
    修饰符
    N:显示宽度
    -:左对齐
    +:显示数值符号
    例如: awk
    awk 变量
    awk内置变量之记录变量
    FS:field separator 读取文本时所使用字段分隔符 默认是空白字符
    RS: record separator 输入文本信息使用的换行符
    OFS:out field separator 输出时所使用字段分隔符
    ORS:out record separator 输出时所使用的换行符
    awk内置变量之数据变量
    NR:命令所处理的记录数;如果有多个文件,这个数目会把处理的多个文件中的行统一计数;
    NF:当前记录的field个数
    FNR:与NR不同的是,FNR用于记录正处理的行是当前这一文件中被总共处理的行数
    ARGV: 数组,保存命令行本身这个字符串,如 awk '{print $0}' a.txt b.txt 这个命令中,ARGV[0]保存awk, ARGV[1] 保存a.txt
    AGRC:awk命令的参数的个数
    FILENAME:awk命令所处理的文件的名称
    ENVIRON:当前shell环境变量及其值得关联数组;
    用户自定义变量
    gawk 允许用户自定义自己的变量以便在程序代码中使用。
    awk 的操作符:
    算术操作符:
    -x 负值
    +x 转换为数值
    x^y
    x**y 次方
    x*y 乘法
    x/y 除法
    x+y
    x-y
    x%y
    字符串操作符:
    =
    +=
    -=
    *m
    /m
    %m
    ^=
    **=
    ++
    --
    布尔值符号
    x < y
    x <= y
    x > y
    x >= y
    x == y
    x != y
    x ~ y
    x ! ~ y
    subscript in array
    表达式之间的逻辑关系
    &&
    ||
    条件表达式
    selector ? if-true-exp:if-false-exp
    awk 的模式
    1、Regexp 正则表达式,格式为/regular expression/
    2、expression 表达式,其值非0或为非空字符时满足条件,如 $1 ~ /foo/ 或$1 == "baidu" 用运算符~ (匹配)和!~ (不匹配)
    3、Ranges 指定的匹配范围,格式为pat1,pat2
    4、BEGIN/END 特殊模式,仅在awk命令执行前运行一次或结算前运行一次
    5、Empty(空模式) 匹配任意输入行:

    列如:
    1、以':' 为分隔符,如果第五域有user则输出该行
    awk -F ':' '{if ($5 ~ /user/) print $0}' /etc/passwd
    2、 统计单个文件中某个字符(串)(中文无效)出现的次数
    awk -v RS='character' 'END {print --NR}' xxx.txt

    常见的Action
    Expression 表达式
    Control statements 控制语句
    Compound statements
    Input statements
    Output statements
    文件查找
    locate: 是基于根据全系统的文件数据库进行的,非实时,模糊匹配,查找速度快。
    updatedb 手动更新文件数据库
    find 实时查找、精确查找、遍历指定目录中的所有文件完成查找,速度慢
    find 查找路径 查找标准 查找到以后的处理动作
    查找路径:默认为当前目录
    查找标准:默认为指定路径下的所有文件
    处理动作:默认为显示
    匹配标准:
    -name FileName 对文件名作精确匹配 (支持文件名通配符 ? * [ ] )
    -iname FileName 文件名匹配时不区分大小写
    -regex Pattern 基于正则表达式进行文件名匹配
    -user UserName 基于文件的属主文件查找
    -group GroupName 基于文件的属组文件查找
    -gid UID 基于文件的属主ID文件查找
    -gid GID 基于文件的属组ID文件查找
    -nouser 查找没有属主的文件
    -nogroup 查找没有属组的文件
    -type 根据文件类型查找
    f 、d、c、b、l、p、s 文件的类型
    -size
    [+|-] #k 查找文件大于或小于#k大小的文件
    #M
    #G
    组合条件查找 -a 、-o 、-not (默认的是或条件)
    根据时间查找
    -mtime 天数
    -ctime
    -atime
    [+|-] 天数 查找文件被多少天之前或之内修改(访问、改变)
    -mmin 分钟数
    -cmin
    -amin
    根据权限查找
    -perm mode 权限位精确匹配
    -perm /mode 任意一位匹配即满足条件
    -perm -mode 文件权限能完全包含mode时才能匹配
    执行动作:
    -print:显示
    -ls 类似ls -l的形式显示每一个项目的详细信息
    -ok COMMAND {} ; 每一次操作都需要用户的确认
    -exec COMMAND {} ; 不需要确认
    find ./ -perm -020 -exec mv {} {}.new ;

  • 相关阅读:
    (转)十分钟搞定CSS选择器
    (转)我所理解的OOP——UML六种关系
    闲话:你今天OO了吗?
    oledb方式读取excel文件
    (转)asp.net 高质量缩略图
    (转载)重温SQL——行转列,列转行
    第九讲,资源表解析
    第八讲,TLS表(线程局部存储)
    第七讲,重定位表
    第六讲,导出表
  • 原文地址:https://www.cnblogs.com/gavin11/p/15903178.html
Copyright © 2020-2023  润新知