如何在 shell 脚本中读取文件
How to read a file in shell script
我是 shell 脚本的新手。我正在尝试脚本。
我有一个日志文件,每分钟保存一次数据。该脚本需要检测该日志文件中的关键字,如果该关键字存在的话。
我正在尝试如下:
read jeeva/sample/logs.txt
grep keyword
我知道我的脚本很愚蠢。请帮我解决这个问题。
这会将文件读入变量
some_var=$(cat jeeva/sample/logs.txt)
但你不需要那样做。您只想检查单词 "keyword",因此您可以
grep keyword jeeva/sample/logs.txt
在脚本中,如果找到,则 $?
将等于 0
,否则将等于 1
。
所以你可以这样做:
grep keyword jeeva/sample/logs.txt
if ! [[ $? ]]
then
echo found
else
echo "not found"
fi
我想您只需要监视一些标记的日志消息。
怎么样:
tail -fn 1000 youFile.log | grep yourTag
Tail 在这种情况下似乎更好,因为您不需要重新运行它。
如果你需要脚本试试这个:
#!/bin/bash
while IFS='' read -r line || [[ -n "$line" ]]; do
if [[ $line == *""* ]]; then
echo "Do sth here.";
echo "Like - I've found: $line";
fi
done < ""
$1 是一个文件
$2 是你的标签
➜ generated ./script.sh ~/apps/apache-tomcat-7.0.67/RUNNING.txt UNIX
Do sth here.
Like - I've found: access to bind under UNIX.
也许你想这样写
$ if grep -q keyword jeeva/sample/logs.txt;
then echo "found";
else echo "not found";
fi
-q
选项是找到关键字时抑制输出。
我是 shell 脚本的新手。我正在尝试脚本。
我有一个日志文件,每分钟保存一次数据。该脚本需要检测该日志文件中的关键字,如果该关键字存在的话。
我正在尝试如下:
read jeeva/sample/logs.txt
grep keyword
我知道我的脚本很愚蠢。请帮我解决这个问题。
这会将文件读入变量
some_var=$(cat jeeva/sample/logs.txt)
但你不需要那样做。您只想检查单词 "keyword",因此您可以
grep keyword jeeva/sample/logs.txt
在脚本中,如果找到,则 $?
将等于 0
,否则将等于 1
。
所以你可以这样做:
grep keyword jeeva/sample/logs.txt
if ! [[ $? ]]
then
echo found
else
echo "not found"
fi
我想您只需要监视一些标记的日志消息。 怎么样:
tail -fn 1000 youFile.log | grep yourTag
Tail 在这种情况下似乎更好,因为您不需要重新运行它。
如果你需要脚本试试这个:
#!/bin/bash
while IFS='' read -r line || [[ -n "$line" ]]; do
if [[ $line == *""* ]]; then
echo "Do sth here.";
echo "Like - I've found: $line";
fi
done < ""
$1 是一个文件 $2 是你的标签
➜ generated ./script.sh ~/apps/apache-tomcat-7.0.67/RUNNING.txt UNIX
Do sth here.
Like - I've found: access to bind under UNIX.
也许你想这样写
$ if grep -q keyword jeeva/sample/logs.txt;
then echo "found";
else echo "not found";
fi
-q
选项是找到关键字时抑制输出。