Linux 如何修改/子集wget脚本以指定日期范围,以便仅将特定年份下载到不同的脚本中?

Linux 如何修改/子集wget脚本以指定日期范围,以便仅将特定年份下载到不同的脚本中?,linux,bash,date,download,wget,Linux,Bash,Date,Download,Wget,我正试图从CMIP6网站()下载大量数据,以便进行一些研究,该网站为每个模型提供wget脚本 从1850年到2014年,脚本每6小时或每月一次。日期格式如下(第一个脚本):185001010600-185101010000或(第二个脚本)195001010600-1950020100000、19500201000-195003010000 我的目标是在1980年至2015年期间,将一个巨著变成几个小剧本,每个剧本用五年时间 例如,我想将主脚本分为不同的脚本,间隔5年(“19800101-198

我正试图从CMIP6网站()下载大量数据,以便进行一些研究,该网站为每个模型提供wget脚本

从1850年到2014年,脚本每6小时或每月一次。日期格式如下(第一个脚本):185001010600-185101010000或(第二个脚本)195001010600-1950020100000、19500201000-195003010000


我的目标是在1980年至2015年期间,将一个巨著变成几个小剧本,每个剧本用五年时间

例如,我想将主脚本分为不同的脚本,间隔5年(“19800101-19841231”然后是“19850101-19901231”,等等),每个脚本分别命名为wget-1980_1985.sh、wget-1985_1990.sh

对于第二个脚本的示例日期范围,我需要: 197912010600到198601010000,然后每隔5年


我是初学者,如果可以的话,请帮助我

每个文件的wget脚本格式的一部分如下所示(它不允许我复制和粘贴整个内容,因为有太多的链接[请参见下文以自行查找文件]:


1。)#这些是要下载的嵌入式文件下载_files=“$(catA
bash
for
循环可以生成相关的日期范围和输出文件名

一个简单的
sed
脚本可以删除按顺序出现的相关行

例如:

#!/bin/bash

in=esgf_script

for y in $(seq 1979 5 2014); do
    out="wget_{$y}-$((y+4)).sh"
    sed '/_gn_/{               # if some kind of url:
        /_gn_'$((y+5))'/,$  d; #   delete if year >= y+5
        /_gn_2015/,$        d; #   delete if year >= 2015
        /_gn_'$y'/,$       !d; #   delete if year < y
    }' <"$in" >"$out"
done
!/bin/bash
in=esgf\u脚本
对于y,单位为美元(seq 1979 5 2014);是否
out=“wget_{$y}-$((y+4)).sh”
sed'/_gn./{#如果某种url:
/_如果年份>=y+5,则删除“$((y+5))”/,$d;#
/_gn_2015/,$d;#如果年份>=2015,则删除
/_gn'$y'/,$!d;#如果年份
seq
命令从1979年到2014年每五年生成一次

sed
脚本:

  • 查找包含URL的行:
    /\u gn./
  • 如果年份太大,则删除
  • 否则,如果年份足够大,则不会删除
此代码假定:

  • 除了URL之外,没有任何行包含第一个正则表达式(
    /\u gn./
  • URL按年份升序显示(例如,包含1994的URL不能出现在包含1993的URL之前)

1)你正在用dd删除文件??为什么?2)你能用最少的可验证的解释来简化你的问题吗?@MatiasBarrios他们的意思是
vi
jhnc中的
dd
击键序列是正确的,我的意思是在vi中。为了简化我的问题:我有一个非常大的wget脚本多年,我需要将其子集到许多不同的scri中五年的pts每个“19800101-19851231”然后是“19850101-19901231”?其中一个1985s应该是1984或1986woops,很抱歉(最近没睡过觉!)你是对的,我是说“19800101-19841231”然后是“19850101-19901231”“这太棒了!非常感谢。这是非常接近我需要的!我将如何修改它来为我提供脚本:从198001010000到201401010000(所以是小时、天、月和年)?把这些年分解成:1980-1985年;1985-1990; 1990-1995; 1995-2000; 2000-2005; 2005-2010; 2010-2014年(不需要2015年)?这太棒了!非常感谢你!!!非常感谢