码迷,mamicode.com
首页 > 其他好文 > 详细

三剑客(sed awk head)

时间:2018-07-17 12:43:31      阅读:178      评论:0      收藏:0      [点我收藏+]

标签:选项   sed -n   一个   执行   字符   自动   语句块   tar   后缀   

① sed(替换)
命令格式

sed [options] ‘command‘ file(s)
sed [options] -f scriptfile file(s)
n 读取下一个输入行,用下一个命令处理新的行而不是用第一个命令。
g 表示行内全面替换。
p 表示打印行。
w 表示把行写入一个文件
替换文本中的字符串:

sed ‘s/book/books/‘ file
-n选项和p命令一起使用表示只打印那些发生替换的行:

sed -n ‘s/test/TEST/p‘ file

直接编辑文件选项-i,会匹配file文件中每一行的第一个book替换为books:

sed -i ‘s/book/books/g‘ file
已匹配字符串标记&
正则表达式 \w+ 匹配每一个单词,使用 [&] 替换它,& 对应于之前所匹配到的单词:

echo this is a test line | sed ‘s/\w+/[&]/g‘
[this] [is] [a] [test] [line]

②awk (取行)
awk脚本基本结构
awk ‘BEGIN{ print "start" } pattern{ commands } END{ print "end" }‘ file
一个awk脚本通常由:BEGIN语句块、能够使用模式匹配的通用语句块、END语句块3部分组成,这三个部分是可选的。任意一个部分都可以不出现在脚本中,脚本通常是被单引号或双引号中,例如:

awk ‘BEGIN{ i=0 } { i++ } END{ print i }‘ filename
awk "BEGIN{ i=0 } { i++ } END{ print i }" filename
awk的工作原理
awk ‘BEGIN{ commands } pattern{ commands } END{ commands }‘
第一步:执行BEGIN{ commands }语句块中的语句;
第二步:从文件或标准输入(stdin)读取一行,然后执行pattern{ commands }语句块,它逐行扫描文件,从第一行到最后一行重复这个过程,直到文件全部被读取完毕。
第三步:当读至输入流末尾时,执行END{ commands }语句块。
算术运算符
运算符 描述

    • 加,减
      • / & 乘,除与求余
          • ! 一元加,减和逻辑非
            ^ *** 求幂
            ++ -- 增加或减少,作为前缀或后缀
            awk ‘BEGIN{a="b";print a++,++a;}‘
            0 2
            注意:所有用作算术运算符进行操作,操作数自动转为数值,所有非数值都变为0
            ③ head
            -n<数字>:指定显示头部内容的行数;
            -c<字符数>:指定显示头部内容的字符数;
            -v:总是显示文件名的头信息;
            -q:不显示文件名的头信息。

三剑客(sed awk head)

标签:选项   sed -n   一个   执行   字符   自动   语句块   tar   后缀   

原文地址:http://blog.51cto.com/13860358/2145308

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!