用awk/sed/grep进行文本处理

本文最后更新于2015年5月22日,已超过 1 年没有更新,如果文章内容失效,还请反馈给我,谢谢!

经常会碰到文本处理的问题,之前也有过很多总结了,但知识这东西,经常性的过几遍还是有好处的(因此也会产生重复),把最近的一些小知识记录如下:

搜索关键字:

awk/sed/grep ++搭配++ “cheat sheet”/cheatsheet/清单/列表

以往记录:
参考链接:
更多参考链接:
一些小测试:

==

用sed进行换行符(‘\n’)的替换
搜索关键字:
  • linux bash convert ‘\n’ to <br/>
参考链接:
用sed提取文件中的指定行

http://stackoverflow.com/questions/83329/how-can-i-extract-a-range-of-lines-from-a-text-file-on-unix

跳过前n行

http://stackoverflow.com/questions/6869449/skipping-the-first-n-lines-when-using-regex-with-sed

使用sed 的-i选项

http://stackoverflow.com/questions/5171901/sed-command-find-and-replace-in-file-and-overwrite-file-doesnt-work-it-empties

使用sed的-r选项

==

声明: 除非注明,ixyzero.com文章均为原创,转载请以链接形式标明本文地址,谢谢!
https://ixyzero.com/blog/archives/2203.html

《用awk/sed/grep进行文本处理》上有6条评论

  1. 用grep进行匹配时,仅打印匹配到的内容「-o选项」:

    ...var md5="e21a0ffc2876b34f98280914d98c9a88"...
    grep -oE 'var md5="w+"' #仅打印出其中的md5字符串
    grep -o 'var md5="[[:alnum:]]*"'

    在使用正则表达式时,一般需要「-E选项」的配合,grep默认的BRE用起来感觉不太顺手。

  2. Linux下用grep查找管道操作符(grep查找中如何转义「管道操作符」)

    搜索关键字:
    linux grep escape pipe

    参考解答:
    $ grep -F “abc.sh|” info.log | grep -F “|2017-05-25|” | awk ‘{print $4}’ | sort | uniq -c >~/2017-05-25.host


    -F, --fixed-strings
    Interpret PATTERN as a list of fixed strings, separated by newlines, any of which is to be matched. (-F is specified by POSIX.)

    # 其实 grep 不添加任何选项也可以起到上面的作用。。。
    $ grep “abc.sh|” info.log | grep “|2017-05-25|” | awk ‘{print $4}’ | sort | uniq -c >~/2017-05-25.host2

    参考链接:
    https://stackoverflow.com/questions/23772231/how-to-escape-the-pipe-character-in-grep
    https://stackoverflow.com/questions/11856054/bash-easy-way-to-pass-a-raw-string-to-grep/11856117#11856117

    https://stackoverflow.com/questions/612658/how-can-i-grep-for-a-count-of-pipes #grep的匹配单位是针对行而不是针对字符的

  3. grep在使用-e选项的正则表达式语法时,数字可以用[0-9]表示,但是次数{2}需要对其中的大括号进行转义:

    grep -m 5 " sec-analyse01 " /var/logs/bash.log | grep --color -e "^Jun 30 [0-9]\{2\}:[0-9]\{2\}:[0-9]\{2\} sec-analyse01 "

    grep -e "^Jun 30 [0-9]\{2\}:[0-9]\{2\}:[0-9]\{2\} sec-analyse01 " /var/logs/bash.log >> bash_log.sec-analyse01.20170630

  4. 使用grep解析VPNFilter IoC的Syslog
    http://www.4hou.com/technology/11801.html

    打开一个终端,从这里 https://blog.talosintelligence.com/2018/05/VPNFilter.html 获取相关的IoC IP,并将其粘贴到临时文件中,将该文件保存到:
    /tmp/vpnfilterc2.txt
    内容是与VPNFilter的C2关联的IP地址

    -r =递归
    -i =忽略大小写
    -l =列出文件名而不是行
    -f =使用文件的内容而不是字符串

    $ grep -rilf /tmp/vpnfilterC2.txt syslog.log

发表评论

电子邮件地址不会被公开。 必填项已用*标注