awk 列求和


awk 'BEGIN{sum=0}{sum+=$1}END{print sum}' data.txt

有a、b、c三行三列,计算出第二列和第三列的总和,并在第四行输出

[root@test ~]# cat data.txt
a    1      10
b   26     379
c    2    1605

[root@test ~]# awk '{printf "%10s%5s%8s\n",$1,$2,$3;x+=$2;y+=$3}END{printf "%10s%5s%8s\n","Total:",x,y}' data.txt
     a    1      10
     b   26     379
     c    2    1605
Total:   29    1994
阅读全文

sed 在某行后添加


cat txt
aaa 111 bbb
ccc 222 ddd
eee 333 ggg
jjj 444 kkk
hhh 555 lll
mmm 666 nnn
jjj 444 kkk
kk 777 ggg

使用 a 追加

sed -i -e '/jjj 444 kkk/a\test test test' txt
cat txt
aaa 111 bbb
ccc 222 ddd
eee 333 ggg
jjj 444 kkk
test test test
hhh 555 lll
mmm 666 nnn
jjj 444 kkk
test test test
kk 777 ggg
阅读全文

Shell中 uniq 与 sort -u 的去重区别


uniq 和 sort -u 都能起到删除重复信息的功能。

$ cat test              
jason
jason
jason
fffff
jason

1.uniq test
$uniq test 
jason
fffff
jason 

2.sort -u test
sort -u test
fffff
jason

3.sort test|uniq
$sort test |uniq 
fffff
jason

从上面三个命令我们很容易看出他们之间的区别。
uniq 所谓的重复是连续出现的相同记录。

阅读全文

Nginx upstream 的5种权重分配方式


1.轮询

upstream backend {
  server 192.168.0.14;
  server 192.168.0.15;
}

2.weight
指定轮询几率,weight 和访问比率成正比,用于后端服务器性能不均的情况。

upstream backend {
  server 192.168.0.14 weight=10;
  server 192.168.0.15 weight=10;
}

3.ip_hash
每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问一个后端服务器,可以解决 session 的问题。

upstream backend {
  ip_hash;
  server 192.168.0.14:88;
  server 192.168.0.15:80;
}

4.fair
按后端服务器的响应时间来分配请求,响应时间短的优先分配。

upstream backend {
  server server1.linuxany.com;
  server server2.linuxany.com;
  fair;
}

5.url_hash
按访问 url 的 hash 结果来分配请求,使每个 url 定向到同一个后端服务器,后端服务器为缓存时比较有效。

upstream backend {
  server squid1:3128;
  server squid2:3128;
  hash $request_uri;
  hash_method crc32;
}
阅读全文