Linux sed && awk

sed

sed -i '/exit 0/i\ip route add 10.0.0.0/8 via '$gateway_ip'' /etc/sysconfig/network-scripts/ifup-post 在exit 0上面添加一行
sed -i '/exit 0/i\ip route add 10.0.0.0/8 via '$gateway_ip'' /etc/sysconfig/network-scripts/ifup-post 在exit 0下面添加一行
sed -i '/^$/d' /etc/passwd.bak 去掉文本中的空白行
sed -i '/^\#/d' zookeeper.properties 删除以#开头的行
sed -i '/\&$/d' zookeeper.properties 删除以&结尾的行
sed -e '/^\#/d' -e '/^$/d' zookeeper.properties 删除以#开头的行和空行
sed -i 's/^log.retention.hours=.*$/log.retention.hours=24/' 先匹配某行,然后修改整行
sed -i '/string/d' /etc/passwd.bak 删除匹配行
cat 11.txt | sed 's/^[ \t]*//g' | sed 's/[ \t]*$//g'

 awk

cat /tmp/test | tr -d 'gb' | awk '{sum+=$1} END {print sum}'   使用awk求和
awk '{if($1>50) print $0}'

awk '{print $NF}' example1.txt 输出最后一个字段
awk -F : '/^r/{print $1}' /etc/passwd 匹配以r开头的行的第一个字段
awk -F : '$3>=20{print $1,$3}' /etc/passwd 匹配字段3大于等于20的字段
awk -F : '$7~"bash"{print $1,$7}' /etc/passwd 匹配bash用户并打印字段
awk -F : '$7!~"bash"{print $1,$7}' /etc/passwd 匹配不为bash用户并打印字段
awk -F : '$3==0,$7~"nologin"{printf "%-10s%-10s%-20s\n",$1,$3,$7}' /etc/passwd
awk -F : 'BEGIN{print "username ID shell"} $3==0,$7~"nologin"{printf "%-10s%-10s%-5s\n",$1,$3,$7} END{print "End of report."}' /etc/passwd
awk -F : '{if($1=="root") print $1, "admin"; else print $1, "Common User."}' /etc/passwd
awk -F : '{i=1;while(i<=NF) {if(length($i)>=4) {print $i}; i++}}' /etc/passwd 找出长短大于4的字段
netstat -tan | awk '/^tcp/{STATE[$NF]++} END{for (S in STATE) {print S,STATE[S]}}' 显示字段出现的次数
awk '{count[$1]++} END {for (ip in count) {printf "%-20s:%d\n",ip,count[ip]}}' access_log 显示IP及出现的次数

cat test.txt | awk '{if(NF == 6) print $0}'  列数等于6才输出

 

posted @ 2019-01-08 17:18  蘇氏加多寶  阅读(438)  评论(0编辑  收藏  举报