shell小技巧

# awk ‘{a[$1]++;a[$2]++}END{for (i in a)print i "\t" a[i]}‘ list | grep -w 2 | awk ‘{print $1}‘ > double.list

# grep -f double.list list
10.145.137.125 10.145.137.130 181
10.145.137.130 10.145.137.125 159
100.104.0.46 100.104.0.54 122
10.151.132.145 10.151.132.140 56
10.145.137.124 10.145.137.138 54
10.151.132.140 10.151.132.145 49
10.145.137.138 10.145.137.124 25
100.104.0.54 100.104.0.46 23
10.153.8.15 10.153.8.31 21
10.153.8.31 10.153.8.15 21
10.151.132.167 10.151.132.168 18
10.151.132.168 10.151.132.167 13
10.89.28.6 10.89.28.18 10
10.89.28.18 10.89.28.6 9

# grep -vf double.list list
10.145.96.98 10.145.96.101 212
10.151.6.53 10.151.14.53 206
10.145.96.114 10.145.96.119 65
10.151.12.51 10.151.4.51 36
10.151.132.182 10.151.132.183 32
10.151.5.68 10.151.5.101 23
10.151.4.81 10.151.12.81 20
10.151.13.20 10.151.5.20 20
10.151.14.32 10.151.6.32 18
10.151.12.20 10.151.4.20 15

时间: 2024-10-15 03:01:29

shell小技巧的相关文章

6条shell小技巧,让脚本显得不再业余【转】

如何能让自己的shell显得不那么业余?下面6点实践一定有用. 画外音:本篇文章源自Google的一篇实践,抽取了部分1分钟能读完的内容,加入了一些分析. 一.以下面的语句开场 set -o nounset 在默认情况下,遇到不存在的变量,会忽略并继续执行,而这往往不符合预期,加入该选项,可以避免恶果扩大,终止脚本的执行. 画外音:有些变量名的手误,会让人崩溃的调试半天,通过这个方式,这类手误秒发现. set -o errexit 在默认情况下,遇到执行出错,会跳过并继续执行,而这往往不符合预期

mysql写Shell小技巧

今天终于在表哥的帮助下解决了文件导入/出这个问题了.(很菜逼的一个问题),然后将最近看到的文章都自己测试了下,顺便奉上记录.1.Mysql数据库支持union的时候写文件小技巧: 采用常规的union写入,可以看到前面的字段占位数肯定也会被写入,替换成null也是一样的结果,这个对于写shell没啥大碍,但是如果用来写bat,mof,vbs等文件就会出问题了,那么怎么去掉这个只写入我们需要的内容呢?采用hex编码就好了. 将我们要写入的内容使用hex编码在分段写在每个字段位上,这样就可以只写入我

shell 小技巧之修改后缀及grep

批量修改文件后缀 第一种: #!/bin/bash for fn in *.$1 do mv $fn ${fn%$1}$2 done 第二种: find . -name "*.txt" | awk -F'[./]+' '{print $2}' | xargs -i -t mv {}.txt {}.sh GREP 用户小技巧 文件如下: # cat test.txt  This is a test file a good day and no coludy Sit here and si

shell小技巧--用“$$”和"$0"防止同一个脚本启动多次

在编写shell脚本通过crontab定时任务启动时,如果shell脚本执行时间超过了,crontab拉起脚本的时间间隔,这个时候可能就会出现同一个脚本同时启动多次的现象.这个时候可能会导致采集的数据有重复,计算不准确等等问题,在这种有明显先和顺序要求的时候,就会出问题. 需要采取一定手段,防止这种现象.刚好可以用"$$"和"$0",来实现这个需求,实现只有等当前脚本执行完成之后,才能启动第二次执行.好了,废话不多说,直接贴一个demo,只要稍加改动,就可以套用到自

shell小技巧--带颜色的输出

shell作为一种脚本语言是每个Linux管理员必须要掌握的技能,有时可以为shell中的输出添加一些背景颜色,使得脚本整体上略带美观,下面我们利用echo来输出一段字符串,默认情况下,echo显示的字符串都是白色的 我们可以增加一些颜色 那么是怎么实现的呢?下面给出原脚本代码 可能看到那么多数字有点懵,给出具体格式就好了 "\033[前置字符颜色:背景颜色 XXXX\033[0m"              后面没有]了 最后的[0m 代表恢复原始颜色,如果不加上的话,就会是这样的效

shell小技巧速记

1.读取文件中的内容到数组中. while read buf do tArray[$c]=$buf c=$(expr $c + 1) done < aa.txt #文件名是aa.txt for ((i=0;i<$c;i++)) do echo ${tArray[$i]} done

日常开发中的shell小技巧

工具推荐 命令行中很方便的代码统计工具---cloc 模拟生成熵(避免暴力手搓键盘) sudo rngd -r /dev/urandom -o /dev/random -f 自动输密码的脚本,基于expect #!/usr/bin/expect set password "butub" set files [glob -nocomplain -- ./*.deb] puts "[llength $files]" for {set i 0} {$i<[lleng

对于shell脚本参数获取时的一点小技巧

问题如下: 根据脚本参数的个数$#进行一个循环,在依次输出每个参数$1 $2 $3...... 我有一个循环变量i $i 取到这时的i为1,我想使用这个1再去调用$1,也是就是打印出第一个参数 就是$($i)的意思来取到第几个参数,当然$($i)是不好用的 当时纠结了好久,最后上百度提问,两位高手给出了答案: 1) #!/bin/sh NUMBER=$# echo $NUMBER i=1 while [ $i -le $NUMBER ] do a[$i]=$1 #将数组a[i]赋值为$1,即取得

对于shell脚本获取参数的一些小技巧

问题如下: 根据脚本参数的个数$#进行一个循环,在依次输出每个参数$1 $2 $3...... 我有一个循环变量i $i  取到这时的i为1,我想使用这个1再去调用$1,也是就是打印出第一个参数 就是$($i)的意思来取到第几个参数,当然$($i)是不好用的 当时纠结了好久,最后上百度提问,两位高手给出了答案: 1) #!/bin/sh NUMBER=$# echo $NUMBER i=1 while [ $i -le $NUMBER ] do a[$i]=$1 #将数组a[i]赋值为$1,即取