工作中经常会遇到对文本文件进行处理的情况,总结一些常用的shell命令,如下:
1. 获取当前时间,格式随便控制
time=`date "+%Y-%m-%d %H:%M:%S"`
2. 获取前一天的日期
before_day=`date '+%Y-%m-%d' -d '-1 day'`
3. if 判断字符串相等
if [ "${param}" == "" ]; then
echo "相等"
else
echo "不等"
fi
4. 定义数组,并循环
test_list=("aa" "bb" "cc")
for test in ${test_list[@]}
do
echo ${test}
done
5. grep 查找
以log开头:grep -E "^log"
以log结尾:grep -E "log$"
或条件查找:grep -E "log|txt|csv"
6. awk分列数据
指定分隔符:awk -F "-",不指定默认为"\t"
输出所有:awk '{print $0}'
输出第一列:awk '{print $1}'
输出最后一列:awk '{print $NF}'
输出倒数第一列:awk '{print $(NF-1)}'
加判断:awk '{if($1=="xx") print $NF}'
7. 排序、去重
sort test.txt
uniq test.txt
sort test.txt |uniq
8. sed替换
去空行:sed -e '/^$/d'
在第一列前插入多个拼接字符:sed 's/^/'${aa}'_'${bb}'/'
替换:sed 's/xx/yy/g'
9. 去掉字符串中的"-"
tmp=2017-03-28
temp=${tmp//-/}
10. 连接mysql执行查询,并将结果输出到文件
mysql -h127.0.0.1 -P3306 -uuser -p'pass' -N -e "set names 'utf8'; select * from db.table;" > /path/tmp.txt