流媒体编辑器定义: 文件就是硬盘上的一段存储空间 文件名就引用的名字 文件的内容就是存储硬盘上的字节 读取文件就一个一个字节读取出来 为了减少尽可能少的磁盘io操作采用换行符读取 一次只读一行 1.
流媒体编辑器定义:
文件就是硬盘上的一段存储空间
文件名就引用的名字
文件的内容就是存储硬盘上的字节
读取文件就一个一个字节读取出来
为了减少尽可能少的磁盘io操作采用换行符读取
一次只读一行
1.sed命令:
sed命令会有自己维护的内存空间
对文件内容复制到这个内存空间进行编辑操作
并把结果输出到屏幕上来
1.1sed也叫行编辑器
sed [options] 'script' File
script具有特殊意义的一些字符
也可以通过选项进行操作、
1.2参数:
-n:静默模式,不输出模式空间中的内容
-r:可以使用扩展的正则表达式
-f /path/to/sed_script_file:指定sed脚本
-e 'script' -e 'script' 指定多个编辑指令的
-i:直接编辑原文件
1.3编辑命令:
d:删除
p:打印
i /text:匹配到行之前
a /text:匹配到行之后
r /path/to/somefile:在指定位置把另外一个文件内容插入进来
w /path/to/somefile:将符合条件的所有行保存至指定文件中
=:显示符合条件的行的行号
s:查找替换 /要查找的内容// 查找的内容可以使用模式,但替换的内容不行
正则表达式:
基本的:
字符:
.
[]
[^]
次数:
*
?
grep /?
.*
{m,n}
锚定:
^
$
分组:
()
引用:
/1,/2....
扩展的:
字符:
.
[]
[^]
[[:lower:]] [[:upper:]]....
次数:
*
?
+
{m,n}
锚定:
^
$
或:
a|b
分组:
()
引用:
/1,/2.....
sed '地址定界s@查找条件@替换文本@g'
修饰符:
g:全局替换
i:忽略大小写
1.3常用的命令:
sed '1,3d' /etc/passwd:删除模式空间当中的1-3行
sed -n '1,3d' /etc/passwd:以静默模式删除模式空间当中的1-3行
sed '1,3p'/etc/passwd:打印模式空间当中1-3行其他行继续输出,匹配到的会多输出一行
sed '1i /hello' /etc/passwd 在第一行的前面插入hello
sed 'i /hello' /etc/passwd 在每一行的前面插入hello
sed '/^#/i /hello' /etc/passwd 在以#号开头的前一行插入hello
sed '/^#/w /tmp/filetmp' /etc/passwd 在以#开头的一行后插入并保存/tmp/filetmp文件
sed '/^#/r /tmp/112' /etc/passwd 在以#开头的一行后插入/tmp/112文件
sed 's@^#@@g' /etc/passwd:搜索以#开头的并替换为“ ”。 注意这里删除的只是#不是删除的正行
其中@@@这里面的内容可以现在vim当只进行测试表示意思与///一样。
2.awk命令
报告生成工具
对每一行的每一个字段进行操作并格式化,而后进行显示
变量,条件判断,循环
主要是生成美观的输出结果
2.1用法格式:
awk [options] 'script' File....
awk [options] '/pattern/{action}' File....
action:默认 print
2.2模式pattern:
地址定界:/pat1/,/pat2/
/pattern/
expression
>,<,>=,<=,==,!=,~模式匹配
BEGIN:
每一行处理之前预处理
END:
每一行处理之后的处理
awk常用四种分隔符
输入:
行分隔符
字段分隔符
输出:
行分隔符
字段分隔符
awk内置变量:
NF:字段数
FS:读入分隔符默认空白
OFS:输出分隔符默认空白
-F:指定分隔符
默认空格
$0整行
$1第一列
.....
地址定界:
startline,endline
1,3
/pat1/,/pat2/,从匹配par1的行到pat2结束之间的行
/patter/被这个匹配到行都输出
2.3常用命令:
awk -F ":" '{print $1}' /etc/passwd:打印文件的第一列,以冒号分割的
awk '/^#/ {print $1}' /etc/fstab:打印以#开头的第一列
awk 'BEGIN {FS=":"} {print $1}' /etc/passwd 打印文件的第一列,以冒号分割的
awk '{print "username:"$1,"uid:"$3}' /etc/passwd对第一列前加上username:,第三列前加上uid:
awk '{printf "username:%s uid:%d",$1,$3}'
awk 'BEGIN {FS=":";OFS=":"} {print $1}' /etc/passwd
awk 'BEGIN {FS=":|#";OFS=":"} {print $1}' /etc/passwd
awk '$3>=500 {print $1}' /etc/passwd打印uid大于500的用户名
awk '$7~/bash$/ {print $1}' /etc/passwd
awk '/bash$/ {print $1}' /etc/passwd
awk '{print $NF}':打印文件的最后一列,即使每一行的最后一列不是统一