我需要帮助将下面的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[@]}"