Shell实用脚本

前言

好多shell脚本,写过就扔了,感觉很可惜。本文会不断更新,用于记录自我感觉良好的脚本。以后再遇到相似的需求,方便进行参考查找。

短脚本

循环读取单列文本

已知hostlist.txt为:

1
2
www.baidu.com
www.voidking.com

需求:批量查询主机名或者主机IP

1
for i in `cat hostlist.txt`;do host $i;done

文本比较

需求:两个姓名列表,需要对比出两个文件中相同的姓名和不同的姓名。
脚本:

1
2
3
cat file1 > file.txt
cat file2 >> file.txt
cat file.txt | sort |uniq -c | sort -n > result.txt

长脚本

循环读取多列文本

已知mobile.txt为:

1
2
haojin 17625160000
voidking 17625160001

需求:拼接成SQL,实现根据name修改mobile。

1
2
3
4
5
6
7
8
#!/bin/bash

grep -v "^$" mobile.txt | while read line
do
name=`echo $line | awk '{print $1}'`
mobile=`echo $line | awk '{print $2}'`
echo "update user set mobile=\"${mobile}\" where name=\"${name}\";"
done

PS:不能使用for line in cat 'mobile.txt',因为这种方法会按照空格或换行切分文本。

0%