linux中grep、sed、awk命令的使用

  

前言

Linux,全称GNU/Linux,是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和Unix的多用户,多任务,支持多线程和多CPU的操作系统。伴随着互联网的发展,Linux得到了来自全世界软件爱好者,组织,公司的支持。它除了在服务器方面保持着强劲的发展势头以外,在个人电脑,嵌入式系统上都有着长足的进步。使用者不仅可以直观地获取该操作系统的实现机制,而且可以根据自身的需要来修改完善Linux,使其最大化地适应用户的需要。

Linux的优点:

稳定性和高效性:因为Linux是由Unix发展而来,因此Linux与Unix有许多相似之处,不只是用户接口和操作方式,Linux还继承了Unix卓越的稳定性和高效性。对于使用Linux作为操作系统的服务器,连续运行一年不宕机是相当平常的事情。

低配置要求:Linux对硬件的要求很低,它可以在数年前的电脑上很流畅的运行。使用窗口,则需要不断升级机器的硬件。

免费或者少许费用:Linux基于GPL,因此任何人可以免费使用或者修改其中的原代码。只有在选择某些厂商制作的Linux的发行版时,才会需要一点点费用。

强大的支持:大量的Linux爱好者会进行交流讨论,并且开发分享一些好的软件,有非常开放的使用氛围。

安全性:Linux拥有相当庞大的用户和社区支持,因此能很快发现系统漏洞,并迅速发布安全补丁。

 <代码>正则表达式
  
  ifconfig | sed - n & # 39; 2 p # 39;| sed & # 39; s。* inet//舌鳎# 39;| sed & # 39; #子网掩码。* $ # #舌鳎# 39;,#用/#均可理论可用任何特殊字符替代
  # sed - r后面可跟扩展正则,扩展正则,+,(. *)
  ifconfig | sed - n 2 p | sed - r & # 39; # ^。* inet (. *) Broast。* $ # \ 1 #舌鳎# 39;,# \ 1代表正则中的第一个组即(. *)里的内容
  
  ifconfig | sed nr & # 39; 2 s # ^。* inet净。(. *)* $ # \ 1 # gp # 39;,,,,,,#合成一行
  ifconfig | awk & # 39; NR==2{打印$ 2}& # 39;,#取IP地址,awk默认分隔符是空格,取IP最方便
  
  ifconfig ens33 | grep - o“inet [0 - 9] *“;| grep - o“[0 - 9] *“;#取IP
  ifconfig ens33 | sed nr & # 39; 2 s # ^。([0 - 9]* inet。*)子网掩码。* $ # \ 1 # gp # 39;
  
  猫卑劣。txt | sed - r & # 39; s # ^ * inet。(. *)子网掩码(. *)广播(. *)$ ^ C1 \ 2 \ 3 #舌鳎# 39;,
  
  sed - r & # 39; s #(. *),(. *),(. *),(. *),(. *),(. *),(. *) $ # 7 \ \ 6 \ 5 \ 4 2 \ 3 \ \ 1 #舌鳎# 39;,,#后向引用换位置sed最多引用9个,用awk更方便
  
  sed - n & # 39;/^ $/d # 39;,#空行删除,//中写字符串
  
  sed & # 39; 1、2 # C #——和——#舌鳎# 39;,#这里,代表C,C也可以是正则表达式
  
  ls | sed & # 39; s #(^ . *)哈哈# 1. mv \ jpg #舌鳎# 39;| bash
  
  sed & # 39; 1 ~ 2 p, s #我d奇数行
  sed & # 39; 2 ~ 2 p, s #我d偶数行
  
  sed & # 39; s # ^ # #舌鳎负责人# 39;,#头加
  sed & # 39;年代尾巴# $ # #舌鳎# 39;#尾加
  
  sed & # 39; s # ^ #测试#舌鳎# 39;,#开头加测试
  sed & # 39; s # $ #测试#舌鳎# 39;,#末尾加测试
  
  sed多行操作,sed & # 39; 2, str # 39;,& # 39;1 ~ 2,str # 39;,& # 39;1,10我,str # 39;,/,& # 39;1、2 d # 39;,& # 39;5 ~ 10 d # 39;,,/& # 39;1 ~ 3 p # 39;& # 39;1、3 p # 39;
  # sed在我d的时候,必须有相应的行,空文件会出错,也就是说空文件无法直接用sed添加
  sed & # 39;/新/d # 39;,#删除包含新的行,sed命令中,p - n, sed中,n,p,,基本都是成对出现
  
  awk - f“:“;& # 39;{打印1美元“:“2美元“:“3美元“:“4美元“:“5美元“:“6美元“:“7美元“- - - - - -“$ 1}& # 39;passwd, #这里是全文操作
  
  awk - f“5 | 28“;& # 39;NR{打印$ 2}==5 & # 39;,# 5或28作为分隔符两个字符串这种格式最好用|,即使单个字符也用|否则字符串造成歧义
  
  我| awk & # 39;{如果(在2美元;5)打印$ 0}& # 39;0美元,表示整行
  sed - i & # 39; s #页# dd #舌鳎# 39;1.txt,将1。txt文件中的pp改成dd立即生效,我代表直接写入文件 

#在LINUX中,所有的文本处理都是读取一行(进内存)处理一行输出一行直接循环结束
正则表达式,字符串用“;”,以防问题

 <代码> ^。*,以任意字符开的头
  . *美元,以任意字符结尾
  ^字以字开的头
  词以美元结尾
  [^字]括号里的是取反
  。,,只代表一个字符,“是字符就匹配上了,所有除空行“空格和空行是不一样的
  \转义
  *,重复前面0或多个字符
  . *,,所有
  (abc)匹配集合内任意一个字符
  (^ abc)匹配集合内除abc的任意一个字符
  [0 - 9],[a - z]的[a -?]
  \ \}{n,米重复一个,至少n次到至多m次,# #,一个\ \}{n,米这种形式必须用““引起来,且““两边没有空格,否则会报的错
  \ {n, \},一个\ \}{,米,一个\ \ {n}重复n次
  
  egrep sed - r可以不使用\转义
  
  # #了解,扩展正则表达式,grep - e egrep
  +一个或一个以上,(*是0或多)
  吗?0或一个前面字符
  |表示同时过滤多个字符串,,egrep“sshd | systemd"
  ()后向引用,,参考(. *),\ 1
  
  grep - n -我不区分大小写,- o只显示匹配到的内容不输出整行
  
  找到/测试类型f - name“* .sh"| xargs sed - i & # 39; s # #新老#舌鳎# 39;,!叹号可取反——和- o
  也可同时写,sed - i & # 39; s # #新老#舌鳎# 39;,* . sh
  
  # awk
  NR, 0美元整行1美元2美元,美元NF最后一列NF为全行列数
  $ (NF-1)倒数第二行
  
  # awk原理,一行是一个记录
  # RS表示一个记录的结束,FS表示一个区域的分隔NF美元为最后一个区域
  
  ifconfig | awk & # 39;开始{RS=?“} & # 39; & # 39;{打印1美元}& # 39;,以:为代替回车为换行符
  
  #正则条件(NR==2),范围(NR==2, NR==5) 2到5
  # 1美元~/正则开始/,3美元~/正则结束/awk - f“[:] + | \ t +“;& # 39;{print $ 2} & # 39;年级,以一个或多个:(空格或冒号)或1或多个标签制表符作为分隔符,
  
  #开始模块结束模块
  seq 100 | awk & # 39;{+=$ 1} & # 39; & # 39;结束{打印}& # 39;,1加到100
  
  猫passtemp, awk | & # 39;{子(/x/,“ppp")} & # 39; & # 39;{打印$ 0}& # 39;,awk替换
  
  awk & # 39; 1美元lisi ~//{打印$ 0}& # 39;年级,,年级文件匹配1美元包括lisi的行并打印出行
  
  awk & # 39; 4美元~/(5 | 3)$/{打印$ 0}& # 39;年级,匹配5或3结尾
  awk & # 39; 1美元~/^ [l | W]/{print $ 0} & # 39;年级,,匹配l或W开头,用[]和()都可为了和正则匹配,强烈建议用[]
  awk - f“\ t"& # 39;3 ~/^ 9美元/{print $ 0} & # 39;年级
  
  #不包含:!在awk中不包含可以使用!表示
  在awk中,可以用来替换的有三个函数:子gsub gensubsub (r, s (t))
  
  ,,,,,,,r,/找谁/,,,,,,,年代,“替换成什么“
  
  ,,,,,,,[]替换那个部分的
  
  詹awk & # 39; 1美元~//{gsub (/zhang3/,“ccccc", 1美元),打印$ 0}& # 39;年级
  # #注意,zhang3/,“ccccc",以及多个命令间用;,分号

linux中grep、sed、awk命令的使用