【问题标题】:SH script getting file with regula expressionSH脚本使用正则表达式获取文件
【发布时间】:2014-02-19 12:49:10
【问题描述】:

我有一些进程正在生成每日报告的目录。

看起来像:

[root@test raportdaily]$ ls -l
razem 538332
-rwxrwxr--+ 1 raport raport    541526 02-17 06:06 REPORT-SYSTEM_2014-02-17_060623.csv
-rwxrwxr--+ 1 raport raport    542718 02-18 06:22 REPORT-SYSTEM_2014-02-18_062229.csv
-rwxrwxr--+ 1 raport raport    542886 02-19 06:28 REPORT-SYSTEM_2014-02-19_062826.csv

我无法处理的是文件名的最后 6 位数字格式为 HourMinuteSecond 并且每天都不同。

我想创建一个shell script,它可以加载这个文件(我需要知道名称)并将其更改为character set

如果我知道这个文件的确切名称,我可以直接访问它:

#!/bin/sh

iconv -c --from=utf8 --to=utf8 /home/raport/REPORT-SYSTEM_2014-02-19_062826.csv

如何使用如下所示的正则表达式:

REPORT-SYSTEM_2014-02-19_.*.csv

为了在iconv函数中使用这个regex的匹配?

【问题讨论】:

  • 在 shell reg-exp 中,句点 ('.') 表示句点,而不是语言 reg-exp 中的“任何字符”。你可以只做 REPORT-SYSTEM_2014-02-19_*.csv 或者如果你真的确定最后有 6 个数字,? char 是 shell reg-exp for 1 char,所以 REPORT-SYSTEM_2014-02-19_??????.csv 。祝你好运。

标签: regex shell sh


【解决方案1】:

你可以使用 grep 轻松完成:

FILE=`ls /home/raport/ | grep "REPORT-SYSTEM_2014-02-19_.*.csv"`
iconv -c --from=utf8 --to=utf8 $FILE

记下第一行中使用的反引号。

【讨论】:

  • Srsly 我真的很笨...如何在sh 中使用 grep 的结果作为变量?:/
  • 我有很多东西要学...看起来很简单。谢谢你 Vasili Syrakis!
  • 没问题 :) bash 很棒。
猜你喜欢
  • 2015-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-21
  • 2010-12-17
  • 2015-04-30
相关资源
最近更新 更多