在bash中设置变量



我需要帮助将下面的grep命令的输出设置为每行的变量。

    while read line; do 
        grep -oP '@K[^ ]*' <<< $line
    done < tweets

上面显示我想要的东西:

lunaluvbad

mags_gb

等等...

但是,如果我会做类似的事情:

    while read line; do
        usrs="grep -oP '@K[^ ]*' <<< $line"
    done < tweets
    echo $usrs

它显示出奇怪的结果,当然不是我要寻找的结果。我需要$ usrs来显示我上面提到的内容。示例:

lunaluvbad

mags_gb

根本不需要循环。grep无论如何都会在输入的线上循环:

usrs=$(grep -oP '@K[^ ]*' tweets)

使用bash数组和 command substitution这样:

users=()
while read -r line; do
    users+=( "$(grep -oP '@K[^ ]*' <<< "$line")" )
done < tweets

否则使用process substitution

users=()
while read -r line; do
    users+=( "$line" )
done < <(grep -oP '@K[^ ]*' tweets)
printf "%sn" "${users[@]}"

相关内容

  • 没有找到相关文章

最新更新