Shell-Script

如何從文件中grep以下行?

  • March 8, 2019

我有一個文件,其中包含目錄中許多文件的名稱,格式如下:

A20150824.0950-0955_jambala_CcnActiveSessionCounterJob
A20150824.0945-0950_jambala_CcnActiveSessionCounterJob
A20150824.0940-0945_jambala_CcnActiveSessionCounterJob
A20150824.0935-0940_jambala_CcnActiveSessionCounterJob
A20150824.0955-1000_jambala_CcnActiveSessionCounterJob
A20150824.0000-0005_jambala_CcnActiveSessionCounterJob
A20150824.0100-0105_jambala_CcnActiveSessionCounterJob
A20150824.0105-0110_jambala_CcnActiveSessionCounterJob
A20150824.0110-0115_jambala_CcnActiveSessionCounterJob
A20150824.0115-0120_jambala_CcnActiveSessionCounterJob
A20150824.0120-0125_jambala_CcnActiveSessionCounterJob
A20150824.1400-1405_jambala_CcnActiveSessionCounterJob

上述文件的命名約定是A<YYYYMMDD>.HHMM-HHMM_<city>_CcnActiveSessionCounterJob.

這些文件在每天的所有時間每 5 分鐘創建一次,這樣,每小時我得到 12 個文件,每天 12X24 個文件。我生成了一個文件,其中包含所有 12x24 文件的名稱,並while在 bash 腳本中有一個循環,我試圖每小時進行一些處理。我想找到一種方法來創建另一個包含每小時 12 個文件的文件。為此,我有一個 while 外循環,它給出小時值和內分鐘循環,它給出分鐘值。這些文件的名稱中包含時間資訊。前任:

A20150824.0950-0955_jambala_CcnActiveSessionCounterJob

給出 09-50 AM 到 09-55 AM 的資訊。

如何使用grep從包含所有 12X24 文件名的文件中提取文件名並將它們放在單獨的文件中,以便新文件包含以下文件名:

A20150824.0900-0905_jambala_CcnActiveSessionCounterJob
A20150824.0905-0910_jambala_CcnActiveSessionCounterJob
A20150824.0910-0915_jambala_CcnActiveSessionCounterJob
A20150824.0915-0920_jambala_CcnActiveSessionCounterJob
.
.
.
A20150824.0955-1000_jambala_CcnActiveSessionCounterJob

我已經有一個hour具有目前正在處理的小時資訊的變數,我試圖使用以下但它不起作用:

grep -E '.$hour' FILE_with_ALL_FILENAMES

上述文件名中的目標位置.$hour.09我該如何解決?

假設:

hour=09

只需使用它:

grep "\.$hour" file

在您的範例中使用單引號,變數不會被解釋為變數。因此模式搜尋$hour。點也必須被轉義,否則它將匹配任何字元。

引用自:https://unix.stackexchange.com/questions/225293