首页 > 系统相关 >Linux-三剑客

Linux-三剑客

时间:2022-08-31 23:00:30浏览次数:95  
标签:输出 匹配 pattern awk Linux print 文本 三剑客

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/ 

标签:输出,匹配,pattern,awk,Linux,print,文本,三剑客
From: https://www.cnblogs.com/baiyutang7/p/16644852.html

相关文章

  • 关于在Rocky linux下安装dotnet sdk不成功的问题
    RockyLinux9,运行dnfinstall-ydotnet-sdk-6.0一切正常,运行起来非常顺利,安装完毕。但是非常诡异,运行dotnet--list-sdksdotnet--list-rumtimes第一个啥也没有,第......
  • Linux
    Linux1、安装VMWare121)右击以管理员的身份运行安装包2)选择自己电脑一个磁盘(固态)空间比较大的盘D3)在D盘中创建一个文件夹soft,路径不允许存在中文特殊字符2、安......
  • linux下载文件命令
    linux下载文件命令-pretty_田纳西-博客园 https://www.cnblogs.com/pretty-ru/p/10936023.htmlwget命令wget命令用来从指定的URL下载文件。wget非常稳定,它在带宽很......
  • linux top 学习及详解 top变红
    linuxtop学习及详解top变红-豌豆ip代理 https://www.wandouip.com/t5i258522/众所周知,linux的top命令是服务器工程师和运维最常用的工具之一,类似于windows的任务管......
  • Linux下用ls和du命令查看文件以及文件夹大小
    Linux下用ls和du命令查看文件以及文件夹大小-雪球球-博客园 https://www.cnblogs.com/xueqiuqiu/p/7635722.htmlls的用法ls-l|grep"^-"|wc-l或find./compan......
  • Linux软件篇
    学习目标1,了解Linux中软件的安装方式2,掌握Linux的防火墙操作命令3,掌握linux中的JDK的安装4,掌握Linux中安装Tomcat的过程5,掌握Linux中安装Mysql的过程6,了解......
  • Linux 中断 request_threaded_irq request_irq
     https://blog.csdn.net/mcsbary/article/details/103728816总结:request_threaded_irq:中断处理线程化,很好解决高频率的中断响应,类似异步处理request_irq:类似于同步处理......
  • linux中awk的小案例使用
    1.排版整齐的输出第一列与最后一列awk'{printf"%-15s%s\n",$1,$NF}'data2.txt   2.对于数据的每个字段之间进行控制使用print函数打印,如果......
  • linux中awk
    一:说明1.说明Linux系统中还有一个功能更加强大的文本数据处理工具,就是awkawk的最基本功能是在文件或字符串中基于指定规则浏览和抽取信息,awk抽取信息后,才能进......
  • Windows 配置 ssh 免密登录 Linux 服务器
    打开cmdhttps://blog.csdn.net/weixin_40267501/article/details/113379053......