从脚本中的文件中获取特定字符串

时间:2015-11-09 05:18:05

标签: bash file shell unix grep

我有以下文件:(文件名为的样本文件:2015_09_22_processedPartnumList.txt,位置:/ a / b / c / itemreport)

DataLoader_trace_2015_09_22_02_01_32.0956.log:INFO: 2015-09-22
Data Processing Starts : 12345678

我只想在文件/ a / b / c / d / ids _ {{1}中获取上述文件中的所有id,即12345678 ....(每个id在一个单独的行中,而不是以逗号分隔) }的.log

我编写了以下脚本,但我得到的文件是空的。没有任何例外或任何事情。所以,我很难识别错误。请告诉我脚本中有什么问题。

date +%d_%m_%Y_%H_%M_%S

在PCRE中实现grep后,我得到了这个,并没有将任何ID复制到新文件中。

2 个答案:

答案 0 :(得分:0)

如果grep支持PCRE,您可以执行以下操作:

grep -Po '.*:\s\K\d+$' /a/b/c/itemreport/2015_09_22_processedPartnumList.txt \
      >/apps/feeds/out/catalog/ItemPartnumbers_"$(date '+%d_%m_%Y_%H_%M_%S')".log
  • .*:\s将匹配:之后的空格,\K将丢弃该匹配

  • \d+$将匹配我们所需的部分,即直到行尾的数字

示例:

% grep -Po '.*:\s\K\d+$' 2015_09_22_processedPartnumList.txt \
                       >ItemPartnumbers_"$(date '+%d_%m_%Y_%H_%M_%S')".log

% cat ItemPartnumbers_09_11_2015_11_30_49.log 
13982787
14011550
13984790
13984791
14176509
14902623
14924193
14924194
13982787
46795670
46795671

答案 1 :(得分:0)

这不是一个很好的解决方案,但它正在发挥作用。

cat your\ file | cut -d ':' -f2-2 | tr -d INFO