Unix的猫:没有这样的文件或目录错误
问题描述:
我有以下脚本Unix的猫:没有这样的文件或目录错误
#!/bin/bash
set i=0;
while read line
do
echo "$line";
$i < cat "my.log" | grep -w '$line' | wc -l;
echo "$i";
i=0;
done < "test.txt"
test.txt
有一个像
abc
def
lmn
我的日志有一个像
> INFO 2013-08-16 13:46:48,660 Index=abc insertTotal=11
> INFO 2013-08-16 13:46:48,660 Index=abcd insertTotal=11
> INFO 2013-08-16 13:46:48,660 Index=def insertTotal=11
> INFO 2013-08-16 13:46:48,660 Index=abcfe insertTotal=11
的目标是值的值从test.txt
中挑选每个值并在中搜索该模式210文件。
将模式找到的次数分配给变量i
。
我打算检查i
的值,如果它是0
或者找不到模式,那么我希望该模式存储在另一个文件中。
目前,我正在
./parser.sh: line 7: cat: No such file or directory
我曾尝试在命令行cat命令,它一直很好,但它是从脚本中给这个错误。
答
您正在尝试使用名为cat
的文件作为输入到名为0
的命令。这是行不通的。
而不是
$i < cat "my.log" | grep -w "$line" | wc -l;
做到这一点:
i=$(cat "my.log" | grep -w "$line" | wc -l)
请看问题Difference between single and double quotes in Bash的报价为http://tldp.org/LDP/abs/html/commandsub.html命令替换的bash中描述的讨论和。
答
因为它假定cat
作为文件名。
尝试在命令行5 < cat
中,它会抛出相同的错误。
谢谢@Tichodroma。虽然我没有得到预期的结果,但这很奏效。尽管我知道该文件出现了1次模式,但我的变量的值仍然为0。 – Macky
为什么使用grep的'-w'选项?这意味着'只选择那些包含形成整个单词的匹配的行。'这是你想要的吗? – 2013-08-19 10:00:16
是的,所以基本上我有像abcd abc abcde在不同的行上的值。我想选择搜索模式(例如:abc)与数值完全匹配的行。 – Macky