空のテキスト行で区切られたテキスト行を含むテキスト ファイルがあります。そのファイルの内容を配列にプッシュし、空の行をセパレーターとして使用したいと考えています。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にはどんな文字でも使用できると確信していますよね?
または、空の行に基づいて分割して配列内のファイルを分割するためのトリックがあれば、私は興味があります! (それでも、理解のためにこれの一番下に行きたいと思います)。
どうもありがとうございました。良い週末をお過ごしください :)