Unix 在文件上使用grep命令创建数组

Unix 在文件上使用grep命令创建数组,unix,Unix,我正在使用grep命令使用文件中的数据创建一个数组。 这是来自abc.xyz文件的示例 [abc] Hello world [abc] qwertyuy [qwe] poiuyttrr [abc] Zzxcvzxvxczv 我想将每一行存储在一个数组中,该数组的开头有单词“[abc]” 我正在使用以下命令 grep -n "\[abc\]" abc.xyz 并将其存储在变量中,但varaiable被存储为数组。 请建议如何操作。假设您有Bash或Korn shell: var=( $(gre

我正在使用grep命令使用文件中的数据创建一个数组。 这是来自abc.xyz文件的示例

[abc] Hello world
[abc] qwertyuy
[qwe] poiuyttrr
[abc] Zzxcvzxvxczv
我想将每一行存储在一个数组中,该数组的开头有单词“[abc]” 我正在使用以下命令

grep -n "\[abc\]" abc.xyz
并将其存储在变量中,但varaiable被存储为数组。
请建议如何操作。

假设您有Bash或Korn shell:

var=( $(grep -n "\[abc\]" abc.xyz) )
var=(…)
创建数组。
$(…)
执行一个命令,并将结果标记化。请注意,标签等将拆分为单独的单词。对于输入文件,输出为:

$ printf "%s\n" "${var[@]}"
1:[abc]
Hello
world
2:[abc]
qwertyuy
4:[abc]
Zzxcvzxvxczv
$
如果要在换行符上拆分,则必须使用
IFS

$ old="$IFS"
$ IFS=$'\n'    # Bash - may not be available in ksh
$ var=( $(grep -n "\[abc\]" abc.xyz) )
$ IFS="$old"
$ print "%s\n" "${var[@]}"
1:[abc] Hello world
2:[abc] qwertyuy
4:[abc] Zzxcvzxvxczv
$