Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 使用正则表达式获取文件的SH脚本_Regex_Shell_Sh - Fatal编程技术网

Regex 使用正则表达式获取文件的SH脚本

Regex 使用正则表达式获取文件的SH脚本,regex,shell,sh,Regex,Shell,Sh,我有一个目录,其中一些进程正在生成每日报告 这看起来像: [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 -rwxr

我有一个目录,其中一些进程正在生成每日报告

这看起来像:

[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
REPORT-SYSTEM_2014-02-19_.*.csv
我无法处理的是,文件名的最后6位数字的格式是
HourMinuteSecond
,并且每天都不同

我想创建一个
shell脚本
,它将能够加载此文件(我需要知道名称)并更改其
字符集

如果我知道此文件的确切名称,我可以通过以下方式直接访问它:

#!/bin/sh

iconv -c --from=utf8 --to=utf8 /home/raport/REPORT-SYSTEM_2014-02-19_062826.csv
如何使用如下所示的正则表达式:

[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
REPORT-SYSTEM_2014-02-19_.*.csv

要在
iconv
函数中使用此
regex
的匹配?

您可以使用grep轻松完成:

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

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

srly我很笨。。。我如何使用grep的结果作为
sh
中的变量?:/I我有很多东西要学。。。看起来很容易。谢谢你,瓦西里·西拉基斯!没问题:)bash很棒。在shell reg-exp中,句点('.')表示句点,而不是语言reg-exp中的“任何字符”。您可以只执行
REPORT-SYSTEM\u 2014-02-19.*.csv
或者如果您确实确定末尾有6个数字,
字符是shell reg-exp的1个字符,因此
REPORT-SYSTEM\u 2014-02-19.*.csv
。祝你好运