SHELL脚本对LINUX下指定文本文件的满足条件的行的特定位置字符串进行替换

帮忙写个SHELL,按下面步骤

获取当前 系统日期-1 ,存入 变量YDAY ,格式 YYYYMMDD
获取当前 系统日期 ,存入 变量TDAY ,格式 YYYYMMDD
查找文件 首行 第20到27个字符 的内容等于 变量YDAY 的,替换成 变量TDAY
查找文件 首行 第34到41个字符 的内容等于 变量YDAY 的,替换成 变量TDAY
查找文件中,行首为TH的行,查找第21到28个字符的内容等于 变量YDAY的,替换成 变量TDAY
其他位置有字符串等于YDAY的不能被修改

YDAY=$(date +"%Y%m%d" -d "-1 days")
TDAY=$(date +"%Y%m%d")
awk  -v YDAY=$YDAY  -v TDAY=$TDAY '
NR==1 {
if(substr($0,20,8)==YDAY)
    $0=substr($0,1,19) TDAY substr($0,28)
if(substr($0,34,8)==YDAY)
    $0=substr($0,1,33) TDAY substr($0,42)
}
/^TH/{
if(substr($0,21,8)==YDAY)
    $0=substr($0,1,20) TDAY substr($0,29)
}
{print }'  文件名

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答