You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux下如何提取文本文件每行的日期值并赋值给变量

在Linux中提取文本文件指定日期值并存入变量的方法

首先,你的文本文件内容如下:

1:0:d=2016080100:REFC:entire atmosphere:anl
2:415003:d=2016080100:RETOP:cloud top:anl

下面几种方法都能帮你提取每行中的2016080100值并存入变量,根据你的习惯选就行:

方法1:使用awk(推荐,处理结构化文本更灵活)

awk可以直接按分隔符拆分字段,精准提取目标内容:

# 提取第一行的日期值并存入变量date_var
date_var=$(awk -F ':' '{split($3, arr, "="); print arr[2]; exit}' your_file.txt)
# 验证变量内容
echo $date_var

解释:

  • -F ':' 指定每行的分隔符为冒号
  • split($3, arr, "=") 将第三段(d=2016080100)按等号拆分成数组,arr[2]就是我们要的日期数字
  • exit 只处理第一行(如果所有行的日期值相同,这一步很高效;如果需要处理所有行,去掉exit即可)

方法2:grep + cut组合

用grep匹配目标模式,再用cut拆分提取:

date_var=$(grep -o 'd=[0-9]*' your_file.txt | head -n1 | cut -d'=' -f2)
echo $date_var

解释:

  • grep -o 'd=[0-9]*' 只输出每行中匹配d+等号+数字的部分
  • head -n1 取第一行的匹配结果(同样,去掉它可以处理所有行)
  • cut -d'=' -f2 按等号拆分,取第二部分的数字

方法3:使用sed正则匹配

sed通过正则捕获目标内容:

date_var=$(sed -n 's/.*d=\([0-9]*\):.*/\1/p' your_file.txt | head -n1)
echo $date_var

解释:

  • -n 只输出匹配的行
  • s/.*d=\([0-9]*\):.*/\1/p 用正则捕获d=和下一个冒号之间的数字,替换为捕获到的内容并打印
  • head -n1 取第一行结果

如果所有行的日期值都相同,上面的方法取第一行就足够;如果需要遍历所有行的日期值,可以去掉exit或head -n1,然后用循环处理变量内容。

内容的提问来源于stack exchange,提问作者bahram khazaei

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:13:44