微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Linux-三剑客

grep

文本搜索

grep [option] pattern files
-c: 只输出匹配行数
-i: 不区分大小写
-l:查询文件时只输出包含匹配字符的文件名
-n: 显示行号
-s: 不显示不存在或无匹配文本的错误信息
-v: 反向搜索
-o: 只显示匹配的部分
-B<num>:同时显示匹配行前num行
-A<num>:同时显示匹配行后num行
-<num>: 同时显示匹配行的上下num行
-C<num>: 同时显示匹配行的上下num行
-w: 精确匹配,abc 只能匹配abc ,不能匹配abcd
-e: 同时匹配多个,-e pattern1 -e pattern2,任意一个pattern匹配成功就输出
-q: 不显示匹配到的内容,只关心是否匹配成功,$?为0表示匹配成功,1表示失败
-E: 使用扩展正则表达式,
-P:使用perl兼容的正则表达式

egrep:相当于grep -E
fgrep:不支持正则,速度快
三种正则比较

awk

文本处理,一行一行的读取,处理

awk 'BEGIN {command} pattern {commands} END{command}' file

BEGIN: 数据处理前执行的命令
END: 处理数据后执行的命令
pattern: 模式,每一行都执行的命令
BEGIN和END里的命令都只执行一次, pattern里的命令每一行执行一次
-F :指定文本分隔符,认空格。

# awk中的预定义变量
$0代表整行,$1-n,代表分隔后的第1到n个字段
NF: 字段数
NR: 行号
FS: 文本内容分隔符,优先级高于-F
OFS: 输出分隔符,认空格

# awk中的函数
print : 打印
printf: 格式化打印
  %s: 字符串
  %d: 数字
  -:左对齐
  +: 右对齐
  15: 至少占用15个字符

比较表达式

匹配文本之内的内容

>, <, >=, <=
~: 正则匹配, 
!~: 正则匹配不包含

awk -F: '$4>$3 {print $0}' /etc/passwd
awk 'BEGIN{FS=":"} $NF ~ /bash/ {print $0}' /etc/passwd

条件表达式:文本之外的内容

==, >, <, >=, <=
&& || !
awk -F: 'NR==3{print $0}' /etc/passwd

算术表达式

+, -, * , /, %

awk '$3+$4>2000{print $0}' /etc/passwd

流程控制

if:
  if(){}
  if(){}else{}
  if(){}else if{}else{}
for:
  for(i=1;i<10;i++){}

while:
  while(condition){}

awk -F: '{if($3>$4){print "大于"}else{print "小于或等于"}}' /etc/passwd

sed

文本编辑

sed [选项] [动作] [inputfile]

# 选项
-n: 只输出经过处理的行,认情况下所有行都会输出
-i: 修改文件内容而不是输出到终端
-f: 把动作写到文件中
# 动作
a: 添加行,3a在第三行后面添加一行
i: 插入行,3i在第三行插入
c:取代行, 3c取代第三行
p: 列印,与-n连用只输出匹配的行
s: 替换, s/old/new/ 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐