linux命令之grep、sed和awk

一、grep

参数:
 -I :忽略大小写 
 -c :打印匹配的行数 
 -l :从多个文件中查找包含匹配项 
 -v :查找不包含匹配项的行 
 -n:打印包含匹配项的行和行标 grep -n 'push' workLog.txt 文件中包含push的行:

cat workLog.txt |grep -n '红包'|grep '绑定'  即包含红包又包含绑定
cat workLog.txt |grep -n '红包'|grep -v '绑定' 包含红包但不包含绑定
cat workLog.txt |grep -n '^11'  以11开头的行
cat workLog.txt |grep -n '红包$'  以红包结束的行

grep '[239].' data.doc      #输出所有含有以2,3或9开头的,并且是两个数字的行
grep '^48' data.doc      #不匹配行首是48的行
grep -c 'push' workLog.txt 统计包含push的次数
grep --color=auto 'push' workLog.txt 对搜索词显示颜色
grep -v 'a' test.txt 反向查询
grep 'test' d* 显示所有以d开头的文件中包含test的行
grep 'test' aa bb cc 显示在 aa bb cc 文件中包含test的行
grep '[a-z]\{5}\' aa 显示所有包含字符串至少有5个连续小写字母的串

二、sed

1.选项与参数:
-n :使用安静(silent)模式。在一般 sed 的用法中,所有来自 STDIN 的数据一般都会被列出到终端上。但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。
-e :直接在命令列模式上进行 sed 的动作编辑;
-f :直接将 sed 的动作写在一个文件内, -f filename 则可以运行 filename 内的 sed 动作;
-r :sed 的动作支持的是延伸型正规表示法的语法。(默认是基础正规表示法语法)
-i :直接修改读取的文件内容,而不是输出到终端。

2.function:
a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
d :删除,因为是删除啊,所以 d 后面通常不接任何咚咚;
i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
p :列印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~
s :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!

3.示例
sed '2,3d' user1 删除2~3行
sed '3,$d'  删除3到最后一行
sed '2i drink tea' user1 在第二行之前插入
sed '2,3c No 2-5 number' user1 把2~3行替换成‘2-5 number’
sed -n  '2,4p' user1 展示2~4行
sed -n '/wang/p' user1 查找并显示包含'wang'的行
sed -n '/aa/{s/aa/akk/};p' user1 查找并替换
sed -i 's/^M//g' loss910.txt 去掉windows文件中的^M字符,不能直接粘贴^M,ctrl+v,ctrl+m
sed -e '3,$d' -e 's/bash/blueshell/' filename
sed -e '4a\newLine' testfile  在testfile文件的第四行后添加一行
sed '1,20s/old/new/g' filename
sed 以行为单位处理文件

 

三、awk

awk 比sed强的地方在于不仅能以行为单位还能以列为单位处理文件。
awk '{print $1,$2}' communitypostapp.txt  打印第一列和第二列
awk '$1>200' communitypostapp.txt         打印第一列大于200的行
awk '$9~/2016-10-01/' communitypostapp.txt 大于第九列等于2016-10-01的行
awk '{$2="";print $0}' appbusiness1205.txt  删除第二列
echo "aaa 5 70bbb 11 75ccc 50 60" | awk '{ if( $2 >=10 && $2<=20) {print $0} }'  第二列的值大于等于10小于等于20的打印出来
cut 命令也可以以指定分隔符的方式取出一个文件中一个或多个字段
cut -d : -f 1,5 /etc/passwd 以:分隔符取出第1,5两个字段
secureCRT颜色设置
选项-会话选项-终端-仿真:勾选ANSI颜色
选项-会话选项-终端-外观:勾选使用颜色

 

posted @ 2021-03-30 14:32  Mars.wang  阅读(135)  评论(0编辑  收藏  举报