linux中grep、sed、awk 命令的使用
admin
2023-01-24 09:42:50
0

前言

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

Linux 的优点:

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

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

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

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

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

正则表达式

ifconfig |sed -n '2p' |sed 's.*inet//g' |sed 's#netmask.*$##g'  #用/ # 均可 理论可用任何特殊字符替代 
#sed -r 后面可跟扩展正则  扩展正则  +  (.*)
ifconfig |sed -n 2p |sed -r 's#^.*inet (.*) Broast.*$#\1#g'  # \1 代表正则中的第一个GROUP 即(.*)里的内容

ifconfig |sed -nr '2s#^.*inet (.*)net.*$#\1#gp'             #合成一行
ifconfig |awk 'NR==2{print $2}'  #取IP地址   awk 默认分隔符是空格   取IP 最方便 

ifconfig ens33| grep -o "inet [0-9.]*" |grep -o "[0-9.]*" #取IP
ifconfig ens33| sed -nr '2s#^.*inet ([0-9].*)netmask.*$#\1#gp'

cat oldboy.txt| sed -r 's#^ .*inet(.*)netmask(.*)broadcast(.*)$^C1 \2 \3 #g'   

sed -r 's#(.*):(.*):(.*):(.*):(.*):(.*):(.*)$#\7 \6 \5 \4 \3 \2 \1#g'    #后向引用换位置 sed最多引用9个,用awk更方便

sed -n '/^$/d'   #空行删除   //中写字符串

sed '1,2s#C#--&-#g'  # 这里&代表C   C 也可以是正则表达式

ls | sed 's#(^.*)haha#mv \1.jpg#g' |bash 

sed '1~2p's #a i d奇数行
sed '2~2p's #a i d偶数行

sed 's#^#head#g'  #头加 
sed 's#$#tail#g' # 尾加

sed 's#^#test#g'   #开头加test
sed 's#$#test#g'   #末尾加test

sed多行操作  sed '2a,str'  '1~2a,str'  '1,10i,str'   /  '1,2d'  '5~10d'    / '1~3p' '1,3p'
#sed 在 a i d 的时候  必须有相应的行,空文件会出错,也就是说 空文件无法直接用sed 添加 
sed '/new/d'  # 删除包含new的行   sed命令中  -n p  sed 中  -n   p    基本都是成对出现

awk -F ":" '{print $1":"$2":"$3":"$4":"$5":"$6":"$7"------"$1}' passwd  #这里是全文操作

awk -F "5:5|28" 'NR==5{print $2}'   #5:5 或 28 作为分隔符 两个字符串 这种格式最好用|  即使单个字符也用| 否则字符串造成歧义

ll | awk '{if($2>5) print $0}'  $0 表示整行
sed -i 's#pp#dd#g' 1.txt  将1.txt 文件中的pp 改成dd 立即生效  -i 代表直接写入文件

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

^.*  以任意字符开头
.*$  以任意字符结尾
^word 以word 开头
word$ 以word 结尾
[^word] 括号里的是取反
.     只代表一个字符  "是字符就匹配上了  所有除空行" 空格和空行是不一样的
\ 转义
*  重复前面0或多个字符
.*    所有
[abc] 匹配集合内任意一个字符
[^abc] 匹配集合内除abc 的任意一个字符
[0-9]  [a-z] [A-Z]
a\{n,m\} 重复a   至少n次到至多m 次  ##  a\{n,m\} 这种形式必须用""引起来   且""两边没有空格 ,否则会报错
a\{n,\}  a\{,m\}  a\{n\}重复n次

egrep sed -r 可以不使用\转义

## 了解  扩展正则表达式  grep -E  egrep
+ 一个或一个以上  (*是0或多)
? 0或一个前面字符
| 表示同时过滤多个字符串    egrep "sshd|systemd"
() 后向引用    参考(.*)  \1

grep -n -i 不区分大小写  -o 只显示匹配到的内容 不输出整行

find /test -type f -name "*.sh" |xargs sed -i 's#old#new#g'   ! 叹号可取反 -a and -o or 
也可同时写  sed -i 's#old#new#g'  *.sh

#awk
NR  $0整行 $1 $2   $NF最后一列 NF 为全行列数
$(NF-1)倒数第二行

#awk原理  一行是一个记录
#RS表示一个记录的结束  FS表示一个区域的分隔 $NF 为最后一个区域

ifconfig |awk 'BEGIN{RS=":"}''{print $1}'  以:为代替回车 为换行符

#正则 条件(NR==2)  范围(NR==2,NR==5)2到5
# $1~/正则开始/,$3~/正则结束/

awk -F "[ :]+|\t+" '{print $2}' grade   以1个或多个 :(空格或冒号)或1或多个tab制表符 作为分隔符  

#BEGIN模块 END模块
seq 1 100 |awk '{a+=$1}''END{print a}'  1加到100

cat passtemp  |awk '{sub(/x/,"ppp")}''{print $0}'  awk替换

awk '$1~/lisi/{print $0}' grade    grade文件匹配$1 包括lisi的行 并打印出行

awk '$4~/(5|3)$/{print $0}' grade   匹配 5 或 3结尾
awk '$1~/^[l|W]/{print $0}' grade    匹配l 或 W 开头   用[] 和()都可为了和正则匹配   强烈建议用[]
awk -F "\t" '$3~/^9/{print $0}' grade

#不包含:!,在awk中不包含可以使用! 表示
#在awk中,可以用来替换的有三个函数:sub gsub gensubsub(r, s [, t]) 

               r  /找谁/

               s  "替换成什么"

               [] 替换那个部分的

awk '$1~/zhan/{gsub(/zhang3/,"ccccc",$1);print $0}' grade
##注意  /zhang3/  "ccccc"   以及多个命令间用;  分号

相关内容

热门资讯

德国总理:美国正在被伊朗羞辱 德国之声4月27日报道,德国总理默茨在访问一所学校时表示,在当前的持续冲突中,伊朗领导层正试图羞辱美...
理响中国|“长”歌以行,风云激... 光阴如梭,东方潮阔。这里是中国的长三角,世界的长三角。无论过去、现在还是未来,这片土地都因时代而生,...
白宫:特朗普及其国安团队开会讨... 新华社华盛顿4月27日电 美国白宫新闻秘书莱维特27日在记者会上证实,总统特朗普及其国家安全团队当天...
人民日报刊文:日本放开杀伤性武... 日本放开杀伤性武器出口推高地缘冲突风险(国际论坛)常思纯《人民日报》(2026年04月28日 第 0...
医疗保障法草案二审:明确生育保... 满足多样化健康保障需求本报记者 彭 波4月27日,医疗保障法草案二审稿提请十四届全国人大常委会第二十...
天津一景区发生自转旋翼机事故1... 澎湃新闻记者 吕新文中国民用航空华北地区管理局4月22日公布《豪客通航“10•1”天津长芦汉盐旅游区...
卡塔尔埃米尔与美国总统特朗普通... 当地时间24日,卡塔尔埃米尔塔米姆与美国总统特朗普通电话,重点就中东地区局势以及伊朗与美国谈判问题交...
男子30年前被扣押2859克黄... 澎湃新闻记者 王鑫家住辽宁省大连市的潘永嘉近日向澎湃新闻反映称,三十年前,他在大连周水子机场被盖州市...
商务部:取消反制欧盟两家金融机... 中华人民共和国商务部令二〇二六年 第1号鉴于欧盟已取消对中国两家金融机构的制裁措施,现公布《关于取消...
过去24小时共有5艘船只通过霍... 总台记者当地时间24日获悉,过去24小时内,共有5艘船只通过霍尔木兹海峡,其中包括一艘伊朗油轮。(总...