我有一个文本文件,其中包含由空文本行分隔的文本行。我想将该文件的内容推送到一个数组中,并使用空行作为分隔符。我尝试了 IFS="\n" (或 "\r\n" 等。)但无法让它工作,所以我想我会用不在文件中的字符替换任何空行,所以我拿起了西班牙倒置问号 (\xBF)
sed 's/^$/'$(echo -e "\xBF")'/'))
这样就行了,我有一个字符,我将用它来分割我的文件并将其放入一个数组中。(有点随机技巧,但嘿,这只是一种方法..)
现在我需要更改 $IFS 以便它使用倒置的问号来分割数组的数据。
如果我输入
IFS=$(echo -e "\xBF")
在命令行中它工作得很好
echo "$IFS"
¿
但是,如果我键入带有尾随 read -a 的命令,那么它什么也不做:
[user@machine ~]$ IFS=$(echo -e "\xBF") read -a array <<< "$var"
[user@machine ~]$ echo "$IFS"
[user@machine ~]$
这很奇怪,因为 $var 有一个值。
更令人惊讶的是,当我在得到以下信息后立即验证 IFS 的值时:
[user@machine ~]$ echo -n "$IFS" | od -abc
0000000 sp ht nl
040 011 012
\t \n
0000003
[user@machine ~]$
这是 IFS 的默认值。
我很确定 IFS 可以使用任何字符,不是吗?
或者,如果您有任何技巧可以根据空行拆分数组中的文件,我很感兴趣!(为了理解起见,我仍然想深入了解这一点)。
非常感谢,周末愉快:)