
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的用户名和UIDhead /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.txt2.第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 103.显示文件中以s开头的最后一列
[root@cloud ~]# awk -F: '/^s/{print $NF}' passwd.txt /bin/sync /sbin/shutdown4.显示文件中第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 olldboooystat指令:文件/文件系统的详细信息显示。
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