Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 在Bash中的While循环中设置变量_String_Bash_Variables_Loops_Grep - Fatal编程技术网

String 在Bash中的While循环中设置变量

String 在Bash中的While循环中设置变量,string,bash,variables,loops,grep,String,Bash,Variables,Loops,Grep,我需要帮助将下面grep命令的输出设置为每行的变量 while read line; do grep -oP '@\K[^ ]*' <<< $line done < tweets 上面显示了我想要的内容,如下所示: users=() while read -r line; do users+=( "$(grep -oP '@\K[^ ]*' <<< "$line")" ) done < tweets l

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

    while read line; do 
        grep -oP '@\K[^ ]*' <<< $line
    done < tweets
上面显示了我想要的内容,如下所示:

users=()
while read -r line; do
    users+=( "$(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


使用BASH数组和命令替换,如下所示:

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

使用BASH数组和命令替换,如下所示:

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

根本不需要循环。grep仍将在输入行上循环:

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

根本不需要循环。grep仍将在输入行上循环:

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

这几乎显示了我想要的内容,但是输出并没有显示在它自己的行上。每一个单词都需要有自己的一行。有什么想法吗?@rydallcoper在打印变量echo时使用引号$usrs@RydallCooper:如果您只需要输出,grep-oP'@\K[^]*'tweets就是您所需要的。如果您想对输出进行进一步处理,请告诉我们您正在尝试执行的操作。这几乎显示了我想要的操作,但输出没有显示在它自己的行上。每一个单词都需要有自己的一行。有什么想法吗?@rydallcoper在打印变量echo时使用引号$usrs@RydallCooper:如果您只需要输出,grep-oP'@\K[^]*'tweets就是您所需要的。如果您想对输出进行进一步处理,请告诉我们您正在尝试执行的操作。请阅读回答您问题的人并给予评分。请阅读回答您问题的人并给予评分。