linux知识拾遗

比较文件内容

比较file1、file2文件内容不同.

diff -c file1 file2 | colordiff

grep、sed、awk

  • grep

    使用正则表达式搜索文本,并把匹配的行打印出来.

    -r:递归查找

    # 递归查找
    grep -r *.conf *
    

    -n:显示行号

    # 过滤符合条件的行,显示行号
    grep -rn *.conf *
    

    -v:反向匹配
    -E:正则匹配

    # 过滤文件的注释和空行
    grep -Ev '^#|^$' elasticsearch.yml
    
  • 正则表达式

    • 正则表达式单字符

      • 特定字符
          grep 'a'  passwd
        
      • 范围字符
          grep '[a-zA-z0-9]' passwd
          grep '[^0-9]' passwd  取反,除去数字外的字符
        
      • 任意字符
          grep '.' passwd  如果要使用.本身,需要转义:\.
        
    • 正则表达式其他符号

      • 边界字符 、头尾字符
          ^ 字符,头字符,放在一串字母前边,代表以此开头. grep '^root' passwd
          $ 符号,如false$,代表以false字符结束
          ^$ 代表空行,grep '^$' passwd
        
      • 元字符
          w: 匹配任何字符类字符,包括下划线,相当于([a-zA-Z0-9_])
          W: 匹配所有非字符类字符,相当于([^a-zA-Z0-9_])
          b: 代表单词分割. 如,grep '\bx\b' passwd,可以将单词前后分隔的x字符选出来,但不会选择单词
          中出现的x
        
      • 多词匹配
          \*: 零次或多次匹配前面的字符或子表达式. 例子:grep 'se*' test.txt
          \+: 一次或多次匹配前面的字符或表达式. 例子:grep 'se\+' test.txt. 注意这里+前面加反斜杠.
          ?: 零次或1此匹配前面的字符或表达式. 如:grep 'se\?' test.txt. 注意这里?前面要加反斜杠.
          括号使用: grep '\(se\)*' test.txt. 注意括号前面要加反斜杠.
          指定重复次数: grep '[0-9]\{2,3\}'  passwd
        
  • sed 行编辑器

    处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”. 接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出.

    • 命令格式

        sed [options] 'command' file(s)
        options选项:
        	-e<script>或--expression=<script>:以选项中的指定的script来处理输入的文本文件;
        	-n或--quiet或——silent:仅显示script处理后的结果;
      
    • p 打印相关的行

        cat /etc/passwd | sed -n '10p'   // 打印第10行内容
        cat /etc/passwd | sed -n '10,20p'   // 打印第10-20行内容
        cat /etc/passwd | sed -n '10,20!p'   // 不打印第10-20行内容
        cat /etc/passwd | sed -n '10~2p'   // 间隔行,打印出10,12,14...
        cat /etc/passwd | sed -n '/root/,/games/p'  // 正则匹配行范围
        sed -n '/root/p' /etc/passwd  // 打印匹配的行
      
    • a 在行后面增加内容

        cat /etc/passwd | sed '2a***'   // 第二行后增加***
        cat /etc/passwd | sed '1,2a***'  // 在行范围后增加*** 
      
    • i 在行前面插入内容

    • c 把选定的行改为新内容

        cat /etc/passwd | sed '2c abcd'   // 第二行后修改成abcd
        cat /etc/passwd | sed '1,2c abcd'   // 范围内行修改成abcd
      
    • d 删除行

        cat /etc/passwd | sed '2d'   // 删除第二行
        cat /etc/passwd | sed '/root/d'  // 删除掉root行
      
    • s 替换

      • g表示全局替换

        ifconfig bond0|sed -n ‘/inet /p’|sed ‘s/inet.//’ |sed ‘s/netmask.*//’ # 获取某个网卡的ip地址

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值