使用 sed 删除日期、时间和文件扩展名

Remove date, time and file extension with sed

简介

嗨!我正在扫描一堆域的子域。结果;是一个 json 文件以及带有 _ 分隔符的时间和日期。

521wei.xin_2022_04_03_13_09_20.json             wechat.design_2022_04_02_15_13_13.json                                     wechat.org_2022_04_01_15_47_58.json                       admin.wechat.com_2022_04_01_15_37_35.json       wechatapp.com_2022_04_01_16_38_38.json
api.weixin.qq.com_2022_04_01_15_55_38.json      wechatlegal.cn_2022_04_01_16_20_20.json

目的是提取域名并删除其余部分(日期、时间和文件扩展名)

有问题

我正在尝试使用 sed 正则表达式来识别时间戳。

''/_[0-9]{4}_[0-9]{2}_[0-9]{2}_[0-9]{2}_[0-9]{2}_[0-9]{2}.json/d''

但它什么也没做。任何帮助将不胜感激

您可以使用以下 sed 命令从文件名中删除时间戳和扩展名:

sed -e 's/[0-9_]\+.json/ /gm'

示例用法:
echo "521wei.xin_2022_04_03_13_09_20.json \
wechat.design_2022_04_02_15_13_13.json \
wechat.org_2022_04_01_15_47_58.json \
admin.wechat.com_2022_04_01_15_37_35.json \
wechatapp.com_2022_04_01_16_38_38.json \
api.weixin.qq.com_2022_04_01_15_55_38.json \
wechatlegal.cn_2022_04_01_16_20_20.json" | sed -e 's/[0-9_]\+.json/ /gm'
输出
521wei.xin  wechat.design  wechat.org  admin.wechat.com  wechatapp.com  api.weixin.qq.com  wechatlegal.cn

Regex Demo

可以使用 cut 命令获得与第一个答案相似的结果:

cut -d '_' -f '1' listWechat.txt