最近研究UNIX收获:
1:截取一个特殊字符以后的:
awk -F'#' '{print $NF}' jobname > rpt
2:截取路径下的文件名(文件名可能会有引号)
例:SCRIPTNAME "/export/opt/bank_scripts/ALSBSCORE.sh"
可以参考:awk '{print $2}' file | basename (版本不同可能有问题)
awk '{print $2}' file | basename | tr -d '"'
cat file | awk -F/ '{print $NF}' | tr -d '"' (查找最后一个/后的字段)
3:顺序查找文件:
cat file | while read line
do
NAME=$line
...
done
4根据变量来对文件进行匹配查找
awk '/'$parameter'/{print}' file (当截取有空格符的时候回报错)
awk '/'"$parameter"'/{print}' file (比上面的优化)
如果不是变量,查找含字段的情况:
awk '/parameter/' file
grep 'parameter' file
sed -n '/parameter/'p file
5 如果是根据来打印一行:
sed -n "$row"p file
6 打印下一行的行号:
awk '/'parameter'/{print(NR+1)}' file
如果是打印本行的行号:awk '/'parameter'/{print(NR)}' file
当然打印行好还有:sed -n -e '/parameter/p' -e '/parameter/=' file
7:把文件中的日期取出来:
文件:AT 0300 + 1 DAYS UNTIL 0500 + 1 DAYS
AT 0100 UNTIL 0600 + 1 DAYS
思想:1:把 + 1 DAYS 先去掉 : cat file | sed "s/+ 1 DAYS//g"
2:把数值取出来 sed "s/[^0-9]*//g
综上所述:cat file | sed "s/+ 1 DAYS//g" | sed "s/[^0-9]*//g"
可以比较看一下结果:sed "s/[0-9]*//g 和sed "s/[^0-9]*//g
sed "s/[^0-9]*//g 和sed "s/[^0-5]*//g
8:关于取得变量的比较:
要用[ ] 并且中间要有空格 和引号:例:if [ "$a" -eq "$b" ]
9:把目标行PAUSU_ALS_BK_CP_MV_FILE_IMIR的以上的最近的ON RUNCYCLE 打印出来了!
awk '/ON RUNCYCLE/,/PAUSU_ALS_BK_CP_MV_FILE_IMIR/' file | head -1
(这可以为group check 服务)