一.sed
1.个人理解: sed可以用来直接操作文件,比如直接查看文件某行,编辑文件(官方解释:自动编辑一个或多个文件、简化对文件的反复操作、编写转换程序等)
2.命令格式:
sed [参数部分] 命令部分 [文本文件]
参数部分常用项 : -i 直接编辑文件,文件会改变; -n 直接输出到屏幕上(一般和命令部分的p合用);
命令部分常用项 : a(在下一行追加) i(在上一行追加) d(删除) s(针对关键字替换) c(针对行的替换) p(输出)
技巧: ①可以在命令部分前加行比如第x到第y行表示为 x,ya---->表示从x到y行所有的行追加的意思
②$表示最后一行,如果想表达从第5行到最后一行,可以写成 5,$
③文本之间的搜索直接匹配,比如 s/hello/hi/g, 表示把文本中所有的hello换成hi ( g表示全局,s表示替换)
④注意,命令部分中 "" 和'' 的区别, "" 里面可以放置变量.
sed '1a drink tea' ab.txt (第一行后面追加drink tea) sed '1d' ab.txt (删除第一行)
sed 's/要替换的字符串/新的字符串/g' ab.txt sed -i '/匹配字符串/d' ab.txt
二.awk
1.个人理解: 主要用于统计文本文件,也是每次处理一行
2.命令格式:
awk [options]
'command'
files
内置几个变量: $0(整行记录) $1(当前记录的第几列)
FILENAME(文件名) FS(文件分隔符) RS(行间分割符) NF(字段数量) NR(第几行)
注意: ① 可以在{}中优雅的写函数表达式,指令执行的位置可以添加条件或者正则表达式
例子:awk 'NR==2{print $0}' filename -->打印第二行
② awk默认以空格分割字段,如果想使用其他符号,可以使用 (-F ':')来改变分割符号
③ awk 'BEGIN{count = 0;} {if($NR<6){print }}'