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的不能被修改 展开
1个回答
展开全部
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 }' 文件名
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询