【问题标题】:How to find a string in result of an unix script如何在 unix 脚本的结果中查找字符串
【发布时间】:2018-12-25 11:52:14
【问题描述】:

我有一个名为“sample.sh”的脚本,其中包含文件名列表及其详细信息。文件名是file1.txt、file1.dat、..etc

sample.sh 包含

<Contents>
   <Key>text1.dat</Key>
   <LastModified>date</LastModified>
   <Name>fjhdgfjsd</Name>
</Contents>
<Contents>
   <Key>text2.dat</Key>
   <LastModified>date</LastModified>
   <Name>fd-datastage</Name>
</Contents>

我想查找 .dat 文件或 .txt 文件的数量。 我使用了以下命令。它按预期工作。

sh sample.sh | grep ".dat"

但我也得到了 -dat 和 .dat 行的结果。输出包含

<Key>text1.dat</Key>
<Key>text2.dat</Key>
<Name>fd-datastage</Name>

但是当我运行 sample.sh 时,我想在 LastModified 上排序输出 请建议任何命令。

【问题讨论】:

  • grep -o .dat sample.sh 的输出是什么?它会输出所有以 .dat 结尾的文件吗?如果不是,它输出什么?
  • 你应该包含一个 sample.sh 的小例子,你的所有命令都提供了不正确的结果,以及这个 sample.sh 的正确结果是什么。要获取 sample.sh 的小示例,请从您的 sample.sh 开始并删除行。
  • @Shanti:您能否提供示例输入或您的sample.sh 脚本的外观,以便我们提供帮助。
  • 更新脚本@user31264

标签: shell grep


【解决方案1】:

试试

grep '\.dat\>' sample.sh | less

如果它只打印您需要的行,那么您的解决方案是

grep -c '\.dat\>' sample.sh

【讨论】:

    【解决方案2】:
    grep "\.dat\|\.txt" sample.sh |wc -l
    

    这应该会为您提供 .dat 和 .txt 文件的总数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-22
      • 2020-08-04
      • 1970-01-01
      • 2022-08-02
      相关资源
      最近更新 更多