zoukankan      html  css  js  c++  java
  • awk 和 sed 使用案例

    1.模仿wc的行为,统计一个文本文件的文件的字符数、行数、单词数.

    awk '{numOfChar+=length($0);numOfWord+=NF}END{print numOfChar" " numOfWord" "NR }' file

    2.上面的例子中有个问题,统计的字符数中包含空格,那么不包含空格的字符数要怎么算?

    awk '{for (i=1; i<=NF; i++) numOfChar+=length($i)}END{print numOfChar}' file

    3.awk中如何引用外部变量

    name="pola"
    echo "" | awk '{print "awk awk awk" “'$name'”}'

    双引号里单引号里$var.

    4.awk数值计算中,如何将一个字符串识别为一串数字?

    0开头的字符串按8进制识别,0x开头的字符串按照16进制识别,除此之外按照十进制。这些都是理想的情况,对于其他的情况则按照最长前缀匹配,即有多少匹配多少。

    echo "0x12" | awk '{printf("%d ",strtonum($0));}'

    5. 点(.)开头的单词怎么整?

    readelf一个.o文件会有.text段的内容出来,如果想找出包含".text"单词的行呢?注意,这个“单词”就是一个点开头,然后后面接了一个正规的单词,其实这并不是个单词!所以当我们使用grep ".text"去筛选这样一行时,根本就筛不出来,为什么?是个元字符,也是个零宽断言,你可以认为它会匹配这样一个奇怪的位置:两个字符的中间!它就去匹配(数字、字母、下划线)与(空格,标点符号,换行符)中间的位置。现在好了,我们的.text,由于点的左面是个空格,所以空格与点之间并不能匹配上,所以使用就搜不出来一个单词喽!

    6. 读某.o文件中代码段在该文件的偏移

    readelf -S write.o | awk '/s.text/{sub(/[.*]/,"",$0); print $4}'

    【awk中模式的部分以及sub等子函数中,正则表达式放在/ /中】

    7. 查找当前目录下所有的.c文件和.h文件

    find . -regextype "posix-egrep" -regex ".*(.c|.h)$"

    【find要求正则表达式全模式匹配,并不是像grep那样直接写出一个局部符串的正则就可以.】

    【如果你疑惑正则的用法,比如为什么转义字符‘’有的时候像是把特殊字符转化为一般字符,有的时候又把这些字符都当做普通字符,转义的意思就变成了:hey, 把这些当做特殊符号对待!那么你就用-regextype选择一种你比较熟悉的方法吧】

    8. ext4有多少行代码?

    find ./fs/ext4/ -type f -regextype "posix-egrep"  -regex ".*(.h|.c)$" -exec cat {} ; | wc -l

    还有一种方法是用awk做,明晚回来发

    9. sed中 N 指令和 n 指令的区别用下面这个例子一目了然:

    hon@hon:~/workstation/shell$ cat cu
    This is 1
    This is 2
    This is 3
    This is 4
    This is 5

    hon@hon:~/workstation/shell$ cat cu | sed 'N;s/ //g;s/^.*$/&_hello/'
    This is 1This is 2_hello
    This is 3This is 4_hello
    This is 5
    hon@hon:~/workstation/shell$ cat cu | sed 'n;s/ //g;s/^.*$/&_hello/'
    This is 1
    This is 2_hello
    This is 3
    This is 4_hello
    This is 5
    n在读取下一行之前把之前的行给整出模式空间打印,读取当前行,于是新读出来的行就是当前空间唯一的行了;

    N在读取下一行之前不会整出之前读出来的行,所以当前空间中的数据也包括前一行捏,这个和awk的RS全局变量意义一样,

    这样的话,n/N后面的sed指令是施加的内容就不一样啦!这就是区别了,貌似N的作用更大一些呢

    p和P应该同理把

  • 相关阅读:
    SpringBoot整合dubbo2.7.12
    linux安装zookeeper
    javaassist创建对象
    jmeter websocket
    jmeter使用
    jmeter返回值乱码
    HTTP 头 Connection:close 作用 和 解决服务器产生大量close_wait问题
    服务器TCP连接中 TIME_WAIT 状态过多
    Chrome 浏览器远程调试 【转】
    拼多多聊天记录监控、拼多多客服机器人代码、拼多多智能机器人代码、拼多多自动发货、拼多多虚拟卡号自动发货
  • 原文地址:https://www.cnblogs.com/honpey/p/4606347.html
Copyright © 2011-2022 走看看