ITPub博客

首页 > Linux操作系统 > Linux操作系统 > unix shell里面AWK和SED用法举例

unix shell里面AWK和SED用法举例

原创 Linux操作系统 作者:hd0315 时间:2013-03-01 14:26:05 0 删除 编辑

$ cat killdver.ksh
#!/usr/bin/ksh
#set
current_datetime=`date +%Y%m%d.%H%M%S`
echo current_datetime=$current_datetime
RUNDIR=`dirname $0`
echo RUNDIR=$RUNDIR
BASENAME=`basename $0`
echo BASENAME=$BASENAME
EXTENSION=`echo $BASENAME | awk -F. '{print $NF}'`
echo EXTENSION=$EXTENSION
FILEBASE=`echo $BASENAME | sed 's/\.'$EXTENSION'$//g'`
echo FILEBASE=$FILEBASE
LOGFILE=$RUNDIR/logs/${FILEBASE}.$current_datetime
echo LOGFILE=$LOGFILE
MAILFILE=$RUNDIR/logs/${FILEBASE}_mail.$current_datetime
echo MAILFILE=$MAILFILE
CONFFILE=$RUNDIR/${FILEBASE}.conf
echo CONFFILE=$CONFFILE

$ killdver.ksh
current_datetime=20130301.131343
RUNDIR=.
BASENAME=killdver.ksh
EXTENSION=ksh
FILEBASE=killdver
LOGFILE=./logs/killdver.20130301.131343
MAILFILE=./logs/killdver_mail.20130301.131343
CONFFILE=./killdver.conf
$

AWK用法举例:

awk下面的变量NF和$NF有什么区别?

我在看unix及linux下的shell编程这本书
看到awk的时候: {print NF} 也有{print $NF}
前者是输出了域个数,后面的一个是什么意思?

答:

{print $NF}
输出最后一个字段的内容

例子

$ echo $BASENAME
killdver.ksh
$ EXTENSION=`echo $BASENAME | awk -F. '{print NF,$NF}'`
$ echo $EXTENSION
2 ksh
$

 

 

SED用法举例

$ BASENAME=killdver.ksh
$ EXTENSION=ksh
$ FILEBASE=`echo $BASENAME | sed 's/\.'$EXTENSION'$//g'`

#说明:上面那条语句的作用是把killdver.ksh的结尾的.ksh换成空白,意思就是把文件去掉后缀名


$ echo $FILEBASE
killdver
$ FILEBASE=`echo $BASENAME | sed 's/\.'$EXTENSION'$/\.txt/g'`
$ echo $FILEBASE
killdver.txt
$

#说明,上面那条语句的作用是把ksh后缀换成txt后缀

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/16423149/viewspace-755037/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: logminer
下一篇: ocp class notes
请登录后发表评论 登录
全部评论

注册时间:2013-02-27

  • 博文量
    4
  • 访问量
    10617