10月18日任务
9.6/9.7 awk
awk相比sed 更支持于分段
我们可以针对每一个段进行匹配
cd..
mkdir awk
cp /etc/passwd awk/test.txt
cd awk
ls
awk -F ' : ' '{print $1}' test.txt
如果没有-F 默认以空格或者空白为指定分隔符
print $0表示所有段
awk -F ' : ' '{print $1,$2,$3}' test.txt
打印第123段
awk -F ' : ' '{print $1“#”$2“#”$3}' test.txt
段之间加#,用双引号取代掉,
awk '/oo/' test.txt 列出所有oo的行,匹配出
awk -F ' : ' $1 ~ /oo/' test.txt 匹配第一行里面的oo
awk -F ' : ' $1 ~ /oo+/' test.txt
不用想grep里面加E
sed
awk不用加其他的符号
也支持多个表达式一起写
awk -F ' : ' '/root/{print$1,$3} /user/ {print $3,$4}' test.txt
grep -E 'root|user' test.txt检查
awk -F ":" '$3==0 ' test.txt
awk -F ":" '$3==0 {print $1}' test.txt
awk -F ":" '$3>="1000" {print $0}' test.txt数字上面加上双引号有区别
awk
双引号里面是指的 字符,单引号指的是数字
条件&& 并且
条件 || 或者
awk -F ':' '{OFS="#"} $3>1000 || $7 ~ /bash/ {print$1,$3,$7}' test.txt
OFS NR行号 NF 段号 可以作为一个判断条件
awk -F ' : ' ‘NR<=10’ test.txt
awk -F ' : ' ‘NR<=10 && $1 ~ /root|sync/’ test.txt
awk -F ' : ' ‘NR==10 && $1 ~ /root|sync/’ test.txt
awk -F ' : ' ‘{print $NR":"$NF}' test.txt
head -n 3 /etc/passwd | awk -F ":" '$1="root"'
awk 可以用于写脚本
需要反复的练习
类似于grep -n 显示行号
扩展
把这里面的所有练习题做一下
http://www.apelearn.com/study_v2/chapter14.html
网友评论