一、从固定格式中取出IP所在的class,并列出
例:
class A {
192.168.1.1
192.168.2.1
192.168.3.1
192.168.169.69
}
class B {
192.168.1.1
192.168.169.69
}
sed -nr '/\{/{:1;N;/\}/!b1;/192.168.169.69/s#^([^{]+).*#\1#p}' file
awk -vRS='class *.' '/192.168.169.69/{print s}{s=RT}' file
sed -nr '/class/h;/192.168.169.69/{x;s#([^{]+).*#\1#p}' file
awk '/class/{s=$1" "$2}/192.168.169.69/{print s}' file
二、awk数组应用域替换
用shadow文件中的密文部分替换passwd中的"x",生一个新passwd文件
awk 'BEGIN{OFS=FS=":"} NR==FNR{a[$1]=$2}NR>FNR{$2=a[$1];print}' /etc/shadow /etc/passwd
NR==FNR,第一个文件shadow,以$1为下标,将$2的值赋给数组a
NR>FNR,第二个文件passwd,将文件shadow$2的值赋值给文件passwd
三、(next)使用
test.txt
gao
20
li
23
zhao
25
liu
19
zhang
28
隔行显示:
当记录行号除2等于1的时候就跳过该行,不会运行{print NR,$0},再重新读取下一行
awk 'NR%2==1{next}{print NR,$0}' test.txt二行合并: awk 'NR%2==1{T=$0;next}{print T,"\t"$0}' test.txt
其他用法汇总:
转载于:https://blog.51cto.com/wushank/1703500