SHELL脚本对LINUX下指定文本文件的满足条件的行的特定位置字符串进行替换
帮忙写个SHELL,按下面步骤获取当前系统日期-1,存入变量YDAY,格式YYYYMMDD获取当前系统日期,存入变量TDAY,格式YYYYMMDD查找文件首行第20到27...
帮忙写个SHELL,按下面步骤
获取当前 系统日期-1 ,存入 变量YDAY ,格式 YYYYMMDD
获取当前 系统日期 ,存入 变量TDAY ,格式 YYYYMMDD
查找文件 首行 第20到27个字符 的内容等于 变量YDAY 的,替换成 变量TDAY
查找文件 首行 第34到41个字符 的内容等于 变量YDAY 的,替换成 变量TDAY
查找文件中,行首为TH的行,查找第21到28个字符的内容等于 变量YDAY的,替换成 变量TDAY
其他位置有字符串等于YDAY的不能被修改 展开
获取当前 系统日期-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 }' 文件名
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询