awk sed grep

1、awk的基本格式
awk '条件 {操作} 条件 {操作}.....'
例如:cat /etc/passwd | awk -F ":" '$3 < 10 {print $1 "\t" $3}'
  
  BEGIN END
BEGIN 执行初始化操作,仅在其它操作执行前执行一次
END   执行收尾工作,所有操作执行结束后执行
例如:cat /etc/passwd | awk  'BEGIN {FS = ":"}$3 < 10 {print $1 "\t" $3}'
cat /etc/passwd | awk -F ":" 'BEGIN {total = 0} $3 < 10 {total = total + $3} END {print "total:%d\n", total}'

awk '$2 ~ /110/ {print $0 }' grade_sheet.txt
awk '{if ($2 ~ /110/) print $0}' grade_sheet.txt $2中匹配'110' ~ 表示正则匹配  !~表示不匹配 
awk '{if (/110/) print $0 }' grade_sheet.txt      $0中匹配'110'
> < >= == |

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


  动作说明: [n1[,n2]]function
  n1, n2 :不见得会存在,一般代表『选择进行动作的行数』,举例来说,如果我的动作是需要在 10 到 20 行之间进行的,则『 10,20[动作行为] 』


  function:
  a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
  d :删除,因为是删除啊,所以 d 后面通常不接任何咚咚;
  i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
  p :列印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~
  s :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g 就是啦!
  p : 打印
  
  例子:
  nl /etc/passwd | sed '2,5d'  删除 2~5 行
  nl /etc/passwd | sed '2d'    删除第二行
  nl /etc/passwd | sed '3,$d'  删除 3到最后一行
  nl /etc/passwd | sed '/root/d'  删除 包含root 行
  
  nl /etc/passwd | sed '2a drink tea' 在第二行后一行加 drink tea
  nl /etc/passwd | sed '2i drink tea' 在第二行前一行加 drink tea
  nl /etc/passwd | sed '/root/i drink tea' 在含有root行的后一行加 drink tea
  
  nl /etc/passwd | sed '2,5c No 2-5 number' 用 No 2-5 number 替换2~5行
  nl /etc/passwd | sed '/root/c root inside' 用 root inside 替换包含root的行
  
  nl /etc/passwd | sed -n '5,7p' 仅列出 /etc/passwd 文件内的第 5-7 行
  nl /etc/passwd | sed '/root/p' 查找含有 root的行 
  nl /etc/passwd | sed -n '/root/p' 和上一句比较
  
  nl /etc/passwd | sed -n 's/root/ROOT/g' 用ROOT替换root
  
  nl /etc/passwd | sed -e '3,$d' -e 's/bash/blueshell/'  连续执行多个sed命令
  
  sed -i 's/\.$/\!/g' regular_express.txt 在源文件上直接修改
  
3、grep命令
grep和egrep的区别:egrep是grep的扩展,可以使用扩展正则法则

grep的用法
grep [-acinv] [--color=auto] '搜寻字符串' filename
-a :将 binary 文件以 text 文件的方式搜寻数据
  -c :计算找到 '搜寻字符串' 的次数
-i :忽略大小写的不同,所以大小写视为相同
-n :顺便输出行号
-v :反向选择,亦即显示出没有 '搜寻字符串' 内容的那一行!
--color=auto :可以将找到的关键词部分加上颜色显示

例子:
grep 'root' /etc/passwd 找出含有root的行
grep -n 'root' /etc/passwd 找出含有root的行,并显示他们的所在行号
cat /etc/passwd | grep --color 'root' 找出含有root的行,并用颜色显示它们
cat /etc/passwd | grep -v 'root' | grep -v 'nologin'  将不包含root和nologin的行显示出来

dmesg | grep -n -A3 -B2 --color=auto 'eth'  用 dmesg 列出核心信息,再以 grep 找出内含 eth 那行,在关键字所在行的前两行与后三行也一起捉出来显示

grep 'hello' *     在当前目录下查找带有hello的文件
grep -r 'hello' *  在当前目录及其子目录下查找带有hello的文件
grep -l -r 'energywise' *  不显示所在行

正则表达式常用
[qsd]
[a-z]
[1-4]
[^ed]

^$
.*
 
\{\}  \{2,5\} \{3\} \{\2,}


egrep与扩展正则表达式,相当于grep -E  
 
egrep 'NW|EA' testfile  查找包含NW或EA
egrep '3+' testfile     查找一个或多个3
grep '3\+' testfile 
grep -E '3+' testfile

egrep '(no)+' testfile   搜索一个或多个连续的no的行
grep -E '(no)+' testfile
grep '\(no\)\+' testfile
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值