首页 > 技术文章 > awk grep sed 的一些问题

hanxing 2015-01-15 16:22 原文

条件   匹配    打印含关键字的行

 ps aux  | sort -k 4 -r | awk '$4 ~ /^[0-9]/ && $4>0 {print $4,$11}'

zzx@zzx134:~$ ll |awk  '$5>102400 {print $9}'  #打印大小大于100k的文件名 

zzx@zzx120:~/test1$ cat 2
11
22
hi  i am  zzx
hello world

zzx@zzx120:~/test1$ cat  2|awk '{if($0~/[0-9]/) {print $0}}' #最好吧if(){}都带上
11
22
zzx@zzx120:~/test1$ cat  2|awk '{if($0~/[^0-9]/) {print $0}}'
hi  i am  zzx
hello world

zzx@zzx120:~/test1$ echo 1|awk '{if($0~/[0-9]/) print "ok"}'     #  echo 1|awk '{if($0~/[0-9]/) {print "ok"}}'         
ok

zzx@zzx120:~/test1$ echo 1|awk '{if($0~/[^0-9]/) {print "ok"}        else {print "NO"}}'           
NO

zzx@zzx120:~/test1$ echo  "12  am  hello"|awk '{if($2=="4"){print $2}else{print "not"}}'
not

zzx@zzx120:~/test1$ cat 2 |awk  '$1>10 {print $0}' 
11
22
hi  i am  zzx
hello world

zzx@zzx120:~/test1$ awk '{if($2=="i") print $0}' 2   # $2="i"是赋值
hi  i am  zzx

zzx@zzx120:~/test1$ awk '($2=="i") {print $0}' 2  
hi  i am  zzx

zzx@zzx120:~/test1$ grep "\<22\>"  2     #精确匹配
22

zzx@zzx120:~/test1$ grep \<lo\> 2
zzx@zzx120:~/test1$ grep “lo” 2
hello world

zzx@zzx120:~/test1$ grep "\<am\>"  2   
hi  i am  zzx

zzx@zzx120:~/test1$ sed -n '/zx/p' 2   # 包含
hi  i am  zzx

 

打印指定行

  zzx@zzx120:~/test1$ sed -n '1,3p'  2    #打印1到3行  不能用1-3
11
22
hi  i am  zzx

zzx@zzx120:~/test1$ awk 'NR==3 {print $0}' 2   #打印第三行(行数为3的行)

hi  i am  zzx

zzx@zzx120:~/test1$ awk 'NF==2 {print $0}' 2  #打印列数为2的行
hello world

 

 

 

 

 

替换

 

推荐阅读