Bash脚本在文件中grep字符串并输出到另一个文件

时间:2016-08-23 09:38:26

标签: linux bash shell

我写了一个bash脚本来grep一个字符串并继续几行,然后输出到另一个文件。

这是我的bash脚本

#!/bin/bash

echo "$#"

if [ "$#" -ne 4 ]; then

        echo "Usage : ./redirectTrace.sh searchText inputFile number_of_Lines_succeeding_the_searchText outputFile"

else

        searchText=$0
        inputFile=$1
        lines=$2
        outputFile=$3

        echo "$0 , $2, $3, $4"

        grep -i -A "$lines" "$searchText" $inputFile > $outputFile
fi

当我以./redirectTrace.sh Drag:: log/Test.log 10 Drag1.log执行此操作时,我得到了

grep: log/Test.log: invalid context length argument

如果我没有传递行数并使用固定值执行,我会收到另一个错误。

脚本:

grep -i -A 10 "$searchText" $inputFile > $outputFile

执行: ./redirectTrace.sh Drag :: log / Test.log Drag1.log`

我收到以下错误:

grep: Drag::: No such file or directory

log/Test.log文件也变空。

为什么?

1 个答案:

答案 0 :(得分:4)

主要部分是因为$0脚本的名称而不是脚本的第一个参数。第一个参数是$1,第四个参数是$4,等等。

所以你的作业应该是:

searchText=$1
inputFile=$2
lines=$3
outputFile=$4