1. awk引用shell变量
a、变量为参数传入如$1$2
var_shell=‘$1$2’
var_awk=‘$var_shell’
b、字符串变量
var_shell=“abc”
var_awk=“’$var_shell’”
c、引用-v参数
awk -v type1=… -v type2=… ‘BEGIN{…}{…}’
eg:
test.dat和test.sh如下
name age
zhangsan 10
lily 18
#!/bin/bash
if [ $# -lt 2 ] ; then
echo "demo: cat test.dat|sh test.sh 'name'"
exit 0
fi
name=$1
sex="boy"
awk -v address="Beijing" '{
name='$name';
sex="'$sex'";
age=$2;
print name"\t"age"\t"sex"\t"address;
}'
cat test.dat |sh test.sh '$1' 18
name age boy Beijing
zhangsan 10 boy Beijing
lily 18 boy Beijing
2. 压缩&解压命令
.tar.gz
解压:tar -zxvf FileName.tar.gz
压缩:tar zcvf FileName.tar.gz DirName
解压
tar –xvf file.tar //解压 tar包
tar -xzvf file.tar.gz //解压tar.gz
tar -xjvf file.tar.bz2 //解压 tar.bz2
tar –xZvf file.tar.Z //解压tar.Z
unrar e file.rar //解压rar
unzip file.zip //解压zip
3. 时间函数
date +%Y%m%d-%H:%M:%S
date +%F 输出当前日期eg:2016-11-16
date -d "-1 day" +%F 输出当前日期前一天 eg:2016-11-15
date +%s 输出当前时间戳
date -d '2013-2-22 22:14’ +%s 指定日期转换为时间戳
date -d @1361542596 时间戳转换为日期
在awk中 strftime("%F" , 时间戳)
4.cut -d " " -f 1 (以空格切分输出第一个字段)shell命令切分字符串 -d指定分隔符 -f指定字段
5.算数运算如下,符号与数字之间必须用空格分开
echo `expr 2 + 2`
4
6.sort命令
sort -t $'\t' -k2nr
sort -k 1.1,1.0表示从第一列第一个字符到最后一个字符
6 -k选项的具体语法格式
要继续往下深入的话,就不得不来点理论知识。你需要了解-k选项的语法格式,如下:
[ FStart [ .CStart ] ] [ Modifier ] [ , [ FEnd [ .CEnd ] ][ Modifier ] ]
这个语法格式可以被其中的逗号(“,”)分为两大部分,Start部分和End部分。
先给你灌输一个思想,那就是“如果不设定End部分,那么就认为End被设定为行尾”。这个概念很重要的,但往往你不会重视它。
Start部分也由三部分组成,其中的Modifier部分就是我们之前说过的类似n和r的选项部分。我们重点说说Start部分的FStart和C.Start。
C.Start也是可以省略的,省略的话就表示从本域的开头部分开始。之前例子中的-k 2和-k 3就是省略了C.Start的例子喽。
FStart.CStart,其中FStart就是表示使用的域,而CStart则表示在FStart域中从第几个字符开始算“排序首字符”。
同理,在End部分中,你可以设定FEnd.CEnd,如果你省略.CEnd,则表示结尾到“域尾”,即本域的最后一个字符。或者,如果你将CEnd设定为0(零),也是表示结尾到“域尾”。
7.crontab
crontab -l 定时启动
crontab -e 使用编辑器编辑当前的crontab文件
crontab 的文件格式:
minutes hour day-of-month month-of-year day-of-week commands
split($0,arr,”\t”)
toupper(val)转大写
substr(列,开始字符,截取长度)
gsub(/^ +| +$/,"",$0);#去掉首位空格
sed -n ‘line_nump’ file_name输出文件指定行
sed -n ’99p’ file_name
查看所有可卸载软件
rpm -q -a | grep mysql
rpm -e name 卸载name软件
域名和ip同: 修改vi /etc/hosts :ip 域名