linux 如何用sed和变量过滤行?

hm2xizp9  于 2023-02-11  发布在  Linux
关注(0)|答案(1)|浏览(195)

我正在尝试创建sed脚本,其中用户提供哪些行将被过滤,但是我不知道如何应用变量。

from=$1
to=$2

if [[ -z $1 ]]
    then from=10
fi

if [[ -t $2 ]]
    then to=20
fi

result=$(sed -n -e '10,20p' /usr/share/wordlists/rockyou.txt)

printf "%s\n" $result

我尝试直接向sed脚本提供变量,但这只会引发一些错误。

5t7ly7z5

5t7ly7z51#

您可以通过在表达式中引用变量来使用sed脚本中的变量。下面是使用这些变量的脚本的更新版本:

from=${1:-10}
to=${2:-20}

result=$(sed -n "${from},${to}p" /usr/share/wordlists/rockyou.txt)

printf "%s\n" "$result"

from变量设置为第一个参数的值,如果未提供第一个参数,则设置为10。to变量设置为第二个参数的值,如果未提供第二个参数,则设置为20。
然后,在sed表达式中使用这些变量,方法是将它们括在双引号中并直接引用它们。

相关问题