【问题标题】:Extract a portion of text from a file name从文件名中提取部分文本
【发布时间】:2018-06-18 13:39:09
【问题描述】:

我有以下名称的文件,每个文件名都包含区号和门牌号的信息。我是脚本新手。如何编写提取区号和门牌号的bash脚本?

ID-Final_RDX_301_002-14_33_1992

Area code is 301
house number is 002

ID-Final_RDX-311-004-14_28_1992

Area code is 311
house number is 004

ID-Final_RDX311021-14_28_1992

Area code is 311
house number is 021

ID-Final_RDX-XT-Se3-14_28_1992

Area code is XT
house number is Se3

ID-Final_RDX-XT-Se11-14_28_1992

Area code is XT
house number is Se11

【问题讨论】:

  • 您需要将这些字符串Area code is <number> ... house number is <number> 逐字输出吗?
  • 想提取区号和门牌号。还需要将其打印到文本文件中
  • 使用脚本需要从文件名中提取区号和门牌号
  • 发布最终预期结果
  • 为什么这个序列311021应该被认为是311021

标签: bash shell substring glob


【解决方案1】:

您的文件名不符合[this] 评论中提到的模式。但我希望这是一个错字。如果是这样的话,你可以用下面提到的类似的方式做一些事情:

find . -type f -name "ID-Final*" -exec awk -vfile={} 'BEGIN{
split(file,res,"-|_");
printf "Area Code : %s House Number : %s%s",res[4],res[5],ORS
}' \;
Area Code : 311 House Number : 004
Area Code : 14 House Number : 28
Area Code : XT House Number : Se3
Area Code : XT House Number : Se11
Area Code : 301 House Number : 002

好吧,如果缺少-/_s 是故意的,那么您需要的不仅仅是这个简单的awk 来解决这个问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多