shell命令

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.834grepvn834datafile5.Decembergrepn:12/datafile6.284grepn:284datafile7.grepn[AZ][az]/4/:[09]datafile8.Kkgrepn[az]/1,/[Kk]datafile9.,grepn[09]/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打印最后一列, 12222NFNF-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的人名。
注:区号本来是圆括号表示的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值