我有一个包含单引号内引号的文本文件。他们是“不是”一个班轮。例如,同一行中可能有两个引号,但所有引号都在单引号之内,例如
'hello world' 'this is the second quotes' 'and this is the third quoted text'
如何创建一个数组并使每个引用的文本成为数组的元素。我尝试使用
declare -a arr=($(cat file.txt))
但是这使它在空间上分开了。为每个单词分配数组中的一个元素
答案 0 :(得分:1)
如果您具有bash v4.4或更高版本,则可以使用xargs
解析带引号的字符串并将其转换为以空分隔的字符串,然后使用readarray
将其转换为bash数组:< / p>
readarray -t -d '' arr < <(xargs printf '%s\0' <file.txt)
如果您使用较旧的bash版本,则必须按元素逐个创建数组:
arr=( )
while IFS= read -r -d '' quote; do
arr+=( "$quote" )
done < <(xargs printf '%s\0' <file.txt)
请注意,xargs
引用语法与其他所有语法(当然)有所不同。它允许单引号和双引号的字符串,但不允许在这些字符串中使用转义引号。在xargs
的各个版本之间可能有所不同。