【发布时间】:2018-03-05 13:40:13
【问题描述】:
我想从文本文件 MODIS_list.txt 中提取一个字符串:
wget https://ladsweb.modaps.eosdis.nasa.gov/archive/allData/6/MOD09GA/2018/062/ -O MODIS_list.txt
然后提取 MODIS 文件的名称:
less MODIS_list.txt | grep -o -P '(?<=hdf">).*(?<=(MOD09GA.A2018062.h18v04.006)).*(?=</a>)'
作为输出给出
MOD09GA.A2018062.h18v04.006.2018064030133.hdf
假设我想遍历更多文件更改,例如日期或产品。
prod_var=MOD09GA
prod_date=2018062
如何在 grep 命令中插入这两个变量!??
我尝试了以下语法,但它不起作用:
less MODIS_list.txt | grep -o -P '(?<=hdf">).*(?<=($prod_var.A$prod_date.h18v04.006)).*(?=</a>)'
【问题讨论】:
-
变量不插入单引号字符串,使用双引号。
-
您想从 MODIS_list.txt 文件中提取哪个字符串(上面的第一步)?
-
您的意思是
less MODIS_list.txt还是(可能更好)cat MODIS_list.txt? -
@PierreFrançois 是的也可以使用
cat我想提取满足模式的MODIS产品:MOD09GA.A2018062.h18v04.006* -
实际上
grep非常了解如何自己读取文件;grep 'regex' MODIS_list.txt。另见useless use ofcat.(毫无用处的less当然是无价的。)
标签: bash grep pattern-matching