grep命令练习:
选项与参数:
-a :将 binary 文件以 text 文件的方式搜寻数据
-c :计算找到 ‘搜寻字符串’ 的次数
-i :忽略大小写的不同,所以大小写视为相同
-n :顺便输出行号
-v :反向选择,亦即显示出没有 ‘搜寻字符串’ 内容的那一行!
–color=auto :可以将找到的关键词部分加上颜色的显示喔!
-A3 包含当前数据的后面三行数据,
-B2 包含当前数据的前两行
0.包含jon数据的前两行和后一行
grep -n -A1 -B2 ‘Jon’ test.log
1.显示所有包含San的行
grep –n ‘San’ datafile
2.显示所有以J开始的人名所在的行
grep –n ‘^J’ datafile
3.显示所有以700结尾的行
grep –n ‘700
’
d
a
t
a
f
i
l
e
4.
显
示
所
有
不
包
括
834
的
行
g
r
e
p
–
v
n
‘
834
’
d
a
t
a
f
i
l
e
5.
显
示
所
有
生
日
在
D
e
c
e
m
b
e
r
的
行
g
r
e
p
–
n
‘
:
12
/
’
d
a
t
a
f
i
l
e
6.
显
示
所
有
电
话
号
码
的
区
号
为
284
的
行
g
r
e
p
–
n
‘
:
284
−
’
d
a
t
a
f
i
l
e
7.
显
示
所
有
这
样
的
行
:
它
包
含
一
个
大
写
字
母
,
后
跟
四
个
小
写
字
母
,
一
个
冒
号
和
一
个
数
字
g
r
e
p
–
n
‘
[
A
−
Z
]
[
a
−
z
]
/
4
/
:
[
0
−
9
]
’
d
a
t
a
f
i
l
e
8.
显
示
姓
以
K
或
k
开
头
的
行
g
r
e
p
–
n
‘
[
a
−
z
]
/
1
,
/
[
K
k
]
’
d
a
t
a
f
i
l
e
9.
显
示
工
资
为
六
位
数
的
行
,
并
在
前
面
加
行
号
g
r
e
p
–
n
‘
[
0
−
9
]
/
6
/
’ datafile 4.显示所有不包括834的行 grep –vn ‘834’ datafile 5.显示所有生日在December的行 grep –n ‘:12/’ datafile 6.显示所有电话号码的区号为284的行 grep –n ‘:284-’ datafile 7.显示所有这样的行:它包含一个大写字母,后跟四个小写字母,一个冒号和一个数字 grep –n ‘[A-Z][a-z]/{4/}:[0-9]’ datafile 8.显示姓以K或k开头的行 grep –n ‘[a-z]/{1,/} [Kk]’ datafile 9.显示工资为六位数的行,并在前面加行号 grep –n ‘[0-9]/{6/}
’datafile4.显示所有不包括834的行grep–vn‘834’datafile5.显示所有生日在December的行grep–n‘:12/’datafile6.显示所有电话号码的区号为284的行grep–n‘:284−’datafile7.显示所有这样的行:它包含一个大写字母,后跟四个小写字母,一个冒号和一个数字grep–n‘[A−Z][a−z]/4/:[0−9]’datafile8.显示姓以K或k开头的行grep–n‘[a−z]/1,/[Kk]’datafile9.显示工资为六位数的行,并在前面加行号grep–n‘[0−9]/6/’ datafile
10.显示包括Lincoln或lincoln的行,并且grep对大小写不敏感
grep –in ‘lincoln’ datafile
sed命令练习
sed,stream editor,一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换、删除、新增、选取等特定工作。
sed [options] ‘command’ 输入文本
options
-n 取消sed默认输出
-i 改变文件内容
-r 让sed命令支持扩展的正则表达式(默认是基础正则表达式)
p print打印 ; d delete 删除
①打印:
打印第2行的内容;打印第一行到第二行的内容。
sed -n ‘2p’ test.log
sed -n ‘1,2p’ test.log
处理的命令: p print打印 ; d delete 删除
②过滤: sed -n ‘/过滤的内容/处理的命令’ 文件
sed -n ‘/Jon/p’ test.log
③替换:sed -i ‘s#想要修改的内容#新内容#g’ 文件
sed -n ‘/Jon/p’ test.log
sed -i ‘s#Jon#Babmoo#g’ test.log
sed -n ‘/Babmoo/p’ test.log
s编辑替换;g全部替换。
s常说的查找并替换,用一个字符串替换成另一个。
g(global)与s联合使用时,表示对当前行全局替换。
“#”是分隔符,可以用/@等替换
④后向引用:sed -r ‘s#(可以用正则匹配)#\1#g’ 文件
前面小括号里的内容,能用后面的+数字(\1)取出来。即把前面正则匹配括号内的结果,在后面\1取出来操作。
1.把Jon的名字改成Babmoo
sed ‘s/Jon/Babmoo/g’ datafile
2.删除头三行
sed ‘1,3d’ datafile
3.显示5-10行
sed –n ‘5,10p’ datafile
4.删除包含Lane的行
sed ‘/Lane/d’ datafile
5.显示所有生日在November-December之间的行
sed ‘/:1[12]/p’ datafile
6.把三个星号(***)添加到也Fred开头的行
sed –e ‘s/Fred/***Fred’ datafile
7.用JOSE HAS RETIRED取代包含Jose的行
sed –e ‘s/.Jose./JOSE HAS RETIRED/g’ datafile
8.把Popeye的生日改成11/14/46
sed ‘/^Popeye/p’ datafile | sed ‘s/[0-9]/{1,/}//[0-9]/{1,/}//[0-9]/{1,/}/11//14//46/g’
9.删除所有空白行
sed ‘/^$/d’ datafile
文件:datafile
awk命令练习
awk [-F field-separator] 'commands’input-file(s)
commands是真正awk命令,[-F域分隔符],input-file(s)是待处理的文件。
在awk中,文件的每一行中,由域分隔符分开的每一项称为一个域。通常,不指明-F域分隔符的情况下,默认的域分隔符是空格。
awk ‘{print $1}’ 文件
$0打印一行内容,
1
打
印
第
一
列
,
2
打
印
第
二
列
,
2
打
印
第
二
列
,
2
打
印
第
二
列
,
2
打
印
第
二
列
,
N
F
打
印
最
后
一
列
,
1打印第一列, 2打印第二列, 2打印第二列, 2打印第二列, 2打印第二列,NF打印最后一列,
1打印第一列,2打印第二列,2打印第二列,2打印第二列,2打印第二列,NF打印最后一列,NF-1打印倒数第二列。
上面的数据库中包含名字,电话号码和过去三个月里的捐款
1.显示所有电话号码
awk –F : ‘{print $2}’ datafile
2.显示Dan的电话号码
awk –F : ‘/^Dan/{print $2}’ datafile
3.显示Susan的名字和电话号码
awk –F : ‘/^Susan/{print $1, $2}’ datafile
4.显示所有以D开头的姓
awk –F : ‘{print $1}’ datafile | awk ‘{print $2}’ | awk ‘/^D/’
5.显示所有以一个C或E开头的名
awk –F : ‘{print $1}’ datafile | awk ‘{print $1}’ | awk ‘/1/’
6.显示所有只有四个字符的名
awk –F : ‘{print $1}’ datafile | awk ‘{if(length($1) == 4) print $1}’
7.显示所有区号为916的人名
awk –F : ‘/[916]/{print KaTeX parse error: Expected 'EOF', got '}' at position 2: 1}̲’ datafile 8.显示…开头,如$250$100KaTeX parse error: Expected ‘}’, got ‘EOF’ at end of input: …/^Mike/{print “”
3”
3” 3”
3””
4”
4” 4”
4””$5}’ datafile
9.显示姓,其后跟一个逗号和名,如Jody,Savage
awk –F : ‘{print $1}’ datafile | awk ‘{print $2”,”$1}’
10.写一个awk的脚本,它的作用:
显示Savage的全名和电话号码
显示Chet的捐款
显示所有头一个月捐款$250的人名。
注:区号本来是圆括号表示的。
shell命令
最新推荐文章于 2021-12-09 19:58:21 发布