zoukankan      html  css  js  c++  java
  • linux三剑客和管道使用

    管道符|

    • 管道符将两个命令隔开,管道符左边命令的输出作为管道符右边命令的输入

    grep命令

    • 对文件中的行进行正则匹配过滤
    • grep [option] pattern file
    • 正则表达式
      • 记录文本规则的代码,正则表达式匹配文本中的字符串
      • 常用的元字符
        • . 匹配除换行符以外的任意字符
        • w 匹配字母或者数字或下划线或汉字
        • s 匹配任意空白符
        • d 匹配数字
        •  匹配单词的开始或结束
        • ^ 匹配字符串的开始
        • $ 匹配字符串的结束
      • 常用的限定符
        • * 重复零次或更多次
        • + 重复一次或更多次
        • ? 重复零次或一次
        • {n} 重复n次
        • {n,} 重复n次或更多次
        • {n,m} 重复n到m次
    • 常用参数
      • -v 显示不被模式匹配的行
      • -i 忽略字符大小写
      • -n 显示匹配的行号
      • -c 统计匹配的行数
      • -o 仅显示匹配到的字符串
      • -E 使用ERE,相当于egrep
        • 基本正则表达式(BRE)和扩展正则表达式(ERE)的区别仅仅是元字符(meta charactor)的区别而已
        • BRE: 只有^$.*[]是元字符
        • ERE: ^$.[]*+(){}?|都是元字符

    sed命令

    • 对文件中的行进行流编辑,不会影响原有的文件内容
    • sed [-hnV][-e(script)][-f(script文件)][文本文件]
      • -e(script)或--expression=(script) 以选项中指定的script来处理输入的文本文件。
      • -f(script文件)或--file=(script文件) 以选项中指定的script文件来处理输入的文本文件。
      • -h或--help 显示帮助。
      • -n或--quiet或--silent 仅显示script处理后的结果。
      • -V或--version 显示版本信息
    • script动作说明
      • a :新增, 某行后面新增一行,例如sed -e '4a newline' test.txt
      • i :插入, 某行前面新增一行,例如sed -e '4i newline' test.txt
      • c :取代, 可以取代n1,n2之间的行,例如sed -e '4,6c oldline newline' test.txt
      • s :取代,可以搭配正则,例如sed -e '1,20s/old/new/g' test.txt,/g表示全局替换,不加/g表示替换每一行中的第一个匹配到的字符串
      • d :删除,可以取代n1,n2之间的行,例如sed -e '4,6d' test.txt
      • p :打印,将某个选择的数据印出,通常p会与参数 sed -n一起运行,例如sed -n '/root/p' test.txt,//里面是正则-
    • -i参数直接修改文件内容,例如sed -i 's/old/new/g' test.txt

    awk命令

    • 把文件逐行读入,以空格为默认分割符将每行切片,切分成不同的列,切开的列再进行后续处理
    • $0是读取的整行内容,$1是第一列
    • awk 'pattern + action' filenames,pattern就是正则表达式,action对匹配到的内容执行的命令(默认为输出每行内容)
      • -F fs:fs指定输入分隔符,fs可以是字符串或正则表达式,如-F:
      • -v var=value:赋值一个用户定义变量,将外部变量传递给awk
      • -f scripfile:从脚本文件中读取awk命令
    • 内置变量
      • FILENAME awk浏览的文件名
      • BEGIN 处理文本前要执行的操作
      • END 处理文本后要执行的操作
      • FS 输入列分隔符,等价于-F,默认为空白字符
      • OFS 输出列分隔符,默认为空白字符
      • RS 输入行分割符,指定输入时的换行符,原换行符仍有效
      • ORS 输出行分割符,输出时用指定符号代替换行符
      • NF 列数,$NF引用最后一列,$(NF-1)引用倒数第2列
      • NR 行数
      • $0 整条行内容
      • $1 表示当前第一列
    • 冒号为分割符,匹配root的行,打印第7列
      awk -F : '/root/{print $7}' /etc/passwd
      
    • 指定第二行,打印整个行
      awk 'NR==2{print $0}' /etc/passwd
      
    • 使用begin加入标题
      awk -F : 'BEGIN{print "BEGIN BEGIN"} {print $1,$2}' /etc/passwd
      
    • 以|为标志分割行
      echo '111 222|333 444|555 666' | awk -v RS='|' '{print $0}'
      
    • 计算文件大小
      ls -l *.txt | awk '{sum+=$5} END {print sum}'
      
  • 相关阅读:
    mysql8.0.12 安装+配置, Navicat Premium 12 安装+激活,mysql workbench 安装 (Unsupported Operating System 报错解决)
    给大厨写的R数据分析代码
    oracle 数据库表字段的缺失值统计 基于python
    Android onTouchEvent, onClick及onLongClick的调用机制
    android 2D绘图总结1
    详解Android动画之Interpolator插入器
    Android事件触发机制
    抗锯齿与postInvalidate
    详解Android动画之Frame Animation
    android surfaceView与view使用小结
  • 原文地址:https://www.cnblogs.com/iread9527/p/13779501.html
Copyright © 2011-2022 走看看