awk特殊用法
一、從固定格式中取出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
總結
- 上一篇: Python电影推荐系统
- 下一篇: [Leetcode][第39题][JAV