sed是一个管线命令,可以分析standard input,而且 sed 还可以将数据进行取代、删除、新增、撷取特定行等等的功能。
以行为单位的新增/删除功能
以行为单位的取代与显示功能
11.3 延伸正则表达式
我们要去除空白行与行首为 # 的行列,使用的是
grep -v '^$' regular_express.txt | grep -v '^#'
需要使用到管线命令来搜寻两次!那么如果使用延伸型的正则表达式,我们可以简化为:
egrep -v '^$|^#' regular_express.txt
以上就是延伸型的正则表达式的特殊字符。
11.4 文件的格式化与相关处理
11.4.1 格式化打印: printf
11.4.2 awk:好用的数据处理工具
[dmtsai@study ~]$ awk '条件类型1{动作1} 条件类型2{动作2} ...' filename
awk 后面接两个单引号并加上大括号 {} 来设置想要对数据进行的处理动作。 awk 可以处理后续接的文件,也可以读取来自前个指令的 standard output 。但如前面说的, awk 主要是处理“每一行的字段内的数据”,而默认的“字段的分隔符号为 "空白键" 或 "[tab]键" ”!举例来说,我们用 last 可以将登陆者的数据取出来,结果如下所示:
若我想要取出帐号与登陆者的 IP ,且帐号与 IP 之间以 [tab] 隔开,则会变成这样:
上表是 awk 最常使用的动作!通过 print 的功能将字段数据列出来!字段的分隔则以空白键或[tab] 按键来隔开。 因为不论哪一行我都要处理,因此,就不需要有 "条件类型" 的限制!
要注意,awk 后续的所有动作是以单引号“ ' ”括住的,由于单引号与双引号都必须是成对的, 所以, awk 的格式内容如果想要以 print 打印时,记得非变量的文字部分,包含上一小节 printf 提到的格式中,都需要使用双引号来定义出来!因为单引号已经是 awk 的指令固定用法了!
awk 的逻辑运算字符
值得注意的是那个“ == ”的符号,因为:
逻辑运算上面亦即所谓的大于、小于、等于等判断式上面,习惯上是以“ == ”来表示;
如果是直接给予一个值,例如变量设置时,就直接使用 = 而已。