kshからファイルの内容を読み込み、','に分割します。

kshからファイルの内容を読み込み、','に分割します。

私の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

-Sksh93は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-Szsh,区切り記号、いいえ仕切り、提供されるS内容にもかかわらず$IFS)。

おすすめ記事