关于运维:Linux-系统命令三剑客命令实战操作

40次阅读

共计 2369 个字符,预计需要花费 6 分钟才能阅读完成。

后面写过三剑客命令的具体介绍:Linux 三剑客 Awk、Sed、Grep 命令详解

Grep 实例介绍

grep "San" testfile 
#过滤有 San 的行

grep '^J' testfile 
#显示以 J 结尾的行

grep '70$' testfile 
#显示以 70 结尾的行

grep -v "834" testfile 
#显示所有不包含 834 的行

grep ':12/' testfile 
#显示:12/ 的行 

grep ':498-' testfile 
#显示:498- 的行

grep '[A-Z][a-z]{4}:[[:space:]][A-Z]' testfile 
#显示这样的行,一个大写字母 + 四个小写字母 + 空格 + 一个大写字母

grep '[a-z]{1,}[[:space:]][Kk]' testfile 
#显示包含 K k 的行

grep -n '[0-9]{6,}$' testfile 
#显示 6 位数字的行,并打印行号

grep -i "lincoln" testfile 
#显示有 lincoln 的行,不辨别大小写

Sed 实例介绍

sed 's/Jon/Jonathan/g' testfile 
#全局替换(Jon 替换成 Jonathan)sed '1,3d' testfile 
#删除文件 1 - 3 行

sed -n '5,10p' testfile 
#打印文件 5 -10 行内容

sed '/Lane/d' testfile 
#删除包蕴含 lane 的行

sed -ne '/[1-9]{5}:1[12]/p' testfile 
#打印由 5 个数字 +:11/12 的行

sed 's/^Fred/***&/' testfile 
#在以 Fred 结尾的行前加上 ***

sed -e 's/.*Jose.*/JOSE HAS RETIRE/g' testfile 
#将蕴含 Jose 的行替换成 JOSE HAS RETIRE

sed -n '/^Popeye/p' testfile |sed 's/[0-9]{1,}/[0-9]{1,}/[0-9]{1,}/11/14/46/' 
#将以 Popeye 结尾的行打印,而后将“数字 / 数字 / 数字”这格局的数字串替换成 11/14/46

##pattern{n} 匹配模式呈现 n 次。##pattern{n,} 匹配模式呈现起码 n 次。##pattern{n,m} 匹配模式呈现 n 到 m 次之间,n , m 为 0 - 2 5 5 中任意整数

sed '/^$/d' testfile 
#删除所有空行

sed 's/.$//g' 
#删除以. 结尾行

sed 's/^[][]*//g' 
#删除行首空格

sed 's//.[][]*/[]/g' 
#删除句号后跟两个或更多的空格, 用一个空格代替

sed 's/^.//g' 
#删除第一个字符

sed 's/COL/(.../)//g' 
#删除紧跟 COL 的后三个字符

sed 's/^////g' 
#删除门路中第一个 /

sed -n '3,/245700/'p testfile
#从第三行开始查问到 245700 完结并打印

sed -n '2,26!'p testfile
#打印文件(除 2 -26)的行 

Awk 实例介绍

awk –F :‘{print $2}’datafile
#以: 分隔打印第二列

awk –F :‘/^Dan/{print $2}’datafile
#以: 分隔打印以 Dan 结尾行的第二列内容

awk –F :‘/^[CE]/{print $1}’datafile 
#打印以 C 或 E 结尾行的第一列

awk –F :‘{if(length($1) == 4) print $1}’datafile 
#打印以: 分隔且长度为 4 字符的第一列内容

awk –F :‘/[916]/{print $1}’datafile
#匹配 916 的行以: 分隔打印第一列

awk -F : '/^Vinh/{print"a"$5}' 2.txt
#显示以 Dan 结尾行并在第五列前加上 a

awk –F :‘{print $2”,”$1}’datafile
#打印第二列第一列并以, 分隔

awk -F : '($5 == 68900) {print $1}' 2.txt
#以: 分隔打印第五列是 68900 的行第一列  

awk -F : '{if(length($1) == 11) print $1}' 2.txt
#打印以: 分隔且长度为 4 字符的第一列内容

awk -F : '$1~/Tommy Savage/ {print $5}' 2.txt
awk -F : '($1 =="Tommy Savage") {print $5}' 2.txt
#打印以: 分隔且第一列为 Tommy Savage 的第五列内容

ll |awk 'BEGIN {size=0;} {size=size+$5;} END{print"[end]size is ",size}'
#统计目录个的文件所有的字节数

awk 'BEGIN{size=0;} {size=size+$5;} END{print"[end]size is ",size/1024/1024,"M"}' 
#以 M 为单位显示目录下的所有字节数

awk 'BEGIN{a=10;a+=10;print a}'
20 
#a+10 等价于 a=a+10

echo|awk 'BEGIN{a="100testaaa"}a~/test/{print"ok"}' 
#正则匹配 a 是否有 test 字符,成立打印 ok

awk 'BEGIN{a="b";print a=="b"?"ok":"err"}'
ok
awk 'BEGIN{a="b";print a=="c"?"ok":"err"}'
err
#三目运算符?:

awk '/root/{print $0}' passwd 
#匹配所有蕴含 root 的行

awk -F: '$5~/root/{print $0}' passwd 
# 以分号作为分隔符,匹配第 5 个字段是 root 的行

ifconfig eth0|awk 'BEGIN{FS="[[:space:]:]+"} NR==2{print $4}'
#打印 IP 地址

awk '{print toupper($0)}' test.txt
#toupper 是 awk 内置函数,将所小写字母转换成大写 

正文完
 0