Shell 如何在unix脚本的结果中查找字符串

Shell 如何在unix脚本的结果中查找字符串,shell,grep,Shell,Grep,我有一个名为“sample.sh”的脚本,其中包含文件名列表及其详细信息。文件名是file1.txt、file1.dat等等 sample.sh包含 <Contents> <Key>text1.dat</Key> <LastModified>date</LastModified> <Name>fjhdgfjsd</Name> </Contents> <Contents>

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

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和.dat行的结果。输出包含

<Key>text1.dat</Key>
<Key>text2.dat</Key>
<Name>fd-datastage</Name>
text1.dat
text2.dat
fd数据阶段
但我希望在运行sample.sh时在LastModified上进行排序输出 请建议任何命令。

试试看

grep '\.dat\>' sample.sh | less
如果它只打印您需要的行,那么您的解决方案是

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

这将给出.dat和.txt文件的总数。

grep-o.dat sample.sh的输出是什么?它是否输出所有以.dat结尾的文件,而不输出其他文件?如果没有,它会输出什么?您应该包括sample.sh的一个小示例,其中所有命令都提供了不正确的结果,该sample.sh的正确结果是什么。要获取sample.sh的小示例,请从sample.sh开始并删除行。@Shanti:请提供示例输入,或者您的
sample.sh
脚本是什么样子的,以便我们可以提供帮助。Updated script@user31264
grep -c '\.dat\>' sample.sh
grep "\.dat\|\.txt" sample.sh |wc -l