繁体   English   中英

将awk输出存储在bash数组中的问题

[英]Issue storing awk output in bash array

我有以下文件:

Site is facebook.
Site is microsoft.
Site is google.

和下面的脚本:

#!/bin/bash

#tried arr=$(awk {'print'} test) which gives array length as 1

arr=($(awk {'print'} test))


echo "Length ::: ${#arr[@]}"

此处的预期输出为3。但是,我得到的数组长度为9。上面只是脚本的摘录,需要在此处使用awk。

请让我知道问题出在哪里....

这是从awk的输出构建每行一个条目的shell数组的正确方法(需要bash 4+):

readarray -t arr < <(awk '1' file)
declare -p arr

declare -a arr=([0]="Site is facebook." [1]="Site is microsoft." [2]="Site is google")

使用此代码时:

arr=($(awk '1' file))

然后,shell在默认定界符上分割,并将awk输出中的每个单词分配给单独的数组条目。

话虽如此,请记住awk能够执行shell可以做的所有事情,并且始终最好在awk自身中处理数据。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM