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

如何在Bash脚本中移除文本列表中不含年份(YYYY)的行?

移除不含年份(YYYY)的影片条目方法

针对你的需求,这里给几个简单易上手的Bash命令实现,适合新手操作:

方法1:用grep(最直观)

grep可以直接筛选出包含符合格式年份的行,命令如下:

grep -E '\((19|20)[0-9]{2}\)' 你的影片列表.txt

解释:

  • -E 表示使用扩展正则表达式,方便编写复杂匹配规则
  • \( 和 \) 是转义括号,因为括号在正则里有特殊含义,要匹配实际的括号就得转义
  • (19|20) 匹配年份开头的19或20(影片年份大多在这个区间,避免误匹配其他四位数字)
  • [0-9]{2} 匹配后面两位数字,凑成完整的四位数年份

如果要直接把筛选结果覆盖原文件(记得先备份原文件!),可以用:

grep -E '\((19|20)[0-9]{2}\)' 你的影片列表.txt > temp.txt && mv temp.txt 你的影片列表.txt

方法2:用awk

awk的语法简洁,只要行匹配正则就自动打印:

awk '/\((19|20)[0-9]{2}\)/' 你的影片列表.txt

解释:

  • awk里//包裹的是匹配规则,只要行符合这个正则,就会执行默认的print动作,输出该行

方法3:用sed

sed可以删除不符合条件的行,留下符合要求的内容:

sed -n '/\((19|20)[0-9]{2}\)/p' 你的影片列表.txt

或者另一种更直白的写法(删除不匹配的行):

sed '/\((19|20)[0-9]{2}\)/!d' 你的影片列表.txt

解释:

  • 第一种写法里,-n 让sed不默认输出所有行,p 表示只打印匹配正则的行
  • 第二种写法里,!d 表示对不匹配正则的行执行删除操作,剩下的就是符合要求的行

额外提示:

如果你的影片里有18xx年份的老片,可以把正则改成\([0-9]{4}\),不过这样可能会误匹配其他带四位数字括号的文件名,所以优先用(19|20)[0-9]{2}更精准。操作文件前一定要先备份原文件,避免数据丢失!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 06:25:09