私のfile.txtには次の内容が含まれています。
./raw_input/0009/img.raw,./raw_input/0009/calib.raw
答え1
もしあなたのksh
はいksh93
または次をmksh
使用して、最初の行を配列として読み取ることができます。
IFS=, read -rA array < file.txt
zsh
またはにも適用されますyash
。何らかの理由でbash
数年後、この代わり-a
に使用することにしました-A
。
-S
ksh93はCSV解析(複数行にわたる引用符と値の処理)も実行できます。
IFS=, read -rSA array < file.txt
たとえば、次のようなものがありますfile.txt
。
"foo bar",,"blah""blah
blah"
これは以下を提供します:
$ typeset -p array
typeset -a array=('foo bar' '' $'blah"blah\nblah')
分けるフルファイルカンマでは、分割+glob(引用符がない場合は暗黙的に実行されます$(<file)
)を使用してglobを無効にできます。
set -o noglob
IFS=,
array=( $(<file.txt) )
またはksh88 / pdkshとの互換性のために:
set -o noglob
IFS=,
set -A array -- $(<file.txt)
末尾$(<...)
の改行文字も削除されます。
また、ファイルがaで終わる場合(上記の場合,
にも適用される、、Exceptを含む)追加の末尾の空要素は生成されません(これは次のように処理されます)。read
-S
zsh
,
区切り記号、いいえ仕切り、提供されるS
内容にもかかわらず$IFS
)。