awk grep sed 的一些问题
条件 匹配 打印含关键字的行
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
替换