命令记不住

登陆

Awk

Awk

1.awk格式

1`grep  过滤 过滤速度最快
-o -v -i -E 
-l      找出系统中包含文字的文件

2`sed   过滤 替换 修改文件内容
-i.bak
-n 
-r
-ri.bak   xxxxx  cloud.txt    --r放前

3`awk 过滤 取列 统计计算

-F   指定分隔符 
-v   修改或创建awk变量
FS   field  separator 字段分隔符  分隔符 
NR   number of record 记录号 行号   
awk -F: '{print $1}' ~/passwd.txt 
awk -vFS=: '{print $1}' ~/passwd.txt

精确打击 指哪打哪 
awk  '条件{动作}'

条件 
NR==1 
>
>=
<
<=

1.第3列中数字大于等于8的行
2.第3列中数字大于等于8的用户名和UID

head  /etc/passwd >passwd.txt

第3列中数字大于等于8的行

[root@cloud ~]# awk -F: '$3>=8' passwd.txt 
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin

[root@cloud ~]# awk -F: '$3>=8{print $0}' passwd.txt 

2.第3列中数字大于等于8的用户名和UID

head  /etc/passwd >passwd.txt

[root@cloud ~]# awk -F: '$3>=8{print $1"\n"$3}' passwd.txt 
mail
8
uucp
10
[root@cloud ~]# awk -F: '$3>=8{print $1"\t"$3}' passwd.txt 
mail  8
uucp  10
[root@cloud ~]# awk -F: '$3>=8{print $1,$3}' passwd.txt 
mail 8
uucp 10

3.显示文件中以s开头的最后一列

[root@cloud ~]# awk -F: '/^s/{print $NF}' passwd.txt 
/bin/sync
/sbin/shutdown

4.显示文件中第5列中包含root的行 显示整行

$5~//
$5!~//
[root@cloud ~]# awk -F: '$5~/r/' passwd.txt 
root:x:0:0:root:/root:/bin/bash

2.如何使用awk指哪打哪

awk '条件{动作}'

查找当前目录下所有文件,并把文件中的www.etiantian.org字符串替换成www.cloudedu.com。
找出 /cloud目录中以.log结尾的并且 大于1M修改时间是7天之前文件 文件中的cloud替换为oldgirl

-maxdepth 
-type f 
-name 
-iname 
-size 
-mtime 

1.find /cloud  -type f -name "*.log"  -size +1M  -mtime +7 |xargs sed  's###g'
2.sed  's###g'  $(find /cloud  -type f -name "*.log"  -size +1M  -mtime +7)
3.sed  's###g'  `find /cloud  -type f -name "*.log"  -size +1M  -mtime +7`
4.find /cloud  -type f -name "*.log"  -size +1M  -mtime +7 -exec  sed  's###g' {} \; 

问题:请问在一个命令上加什么参数可以实现下面命令的内容在同一行输出。

       echo "cloud";echo "cloud" 
-e  让echo命令支持转义符号 
  \n  
\t  
\b  删除  在屏幕显示东西   
-n  不显示结尾的回车   

11 问题:当从root用户切到普通用户cloud时,执行ifconfig会提示。

已知/cloud/ett.txt文件内容为:

cloud
olldboooy
test
请使用grep或egrep正则匹配的方式过滤出前两行内容

[root@cloud /cloud]# egrep 'ol+dbo+y' ett.txt 
cloud
olldboooy

[root@cloud /cloud]# sed -nr '/ol+dbo+y/p' ett.txt
cloud
olldboooy

[root@cloud /cloud]# awk  '/ol+dbo+y/' ett.txt
cloud
olldboooy

stat指令:文件/文件系统的详细信息显示。
stat命令主要用于显示文件或文件系统的详细信息

[root@cloud ~]# stat /etc/hosts|awk  -F"[(/]" 'NR==4{print $2}'
0644
  [root@cloud ~]# stat /etc/hosts|sed -n 4p|sed -r 's#^.*\(([0-9]+)/.*$#\1#g'
0644
  head  /etc/passwd >passwd.txt

https://www.cnblogs.com/dissipate/p/13091758.html

推荐阅读