シェルスクリプトのスラッシュの修正

シェルスクリプトのスラッシュの修正

このようなテキストファイルがあります。

REP1.bam    ./CONTROL/CONTROL.bam

タブ区切りファイルです。タブ/スペースで行を分割し、個々の列を別々の配列要素として保存したいと思います。

私はこんなことをしました

while read -r line; do arr=(${line{///}); echo ${arr[1]}; done < test.txt

これは私に.Controlcontrol.bamを提供し、スラッシュを保持しません。

この問題をどのように解決できますか?

ベストアンサー1

${line///}代わりにを意味すると思います。シェルにスラッシュを何も変更しないように明示的に要求するので、$line{///}利点があります。 (変数値のみが追加され、リテラルが追加されます。).CONTROLCONTROL.bam$line{///}{///}

なぜあなたがこれをしたいのか分かりません。 2つの異なる変数に2つの列を取得するには、を使用しますread -r var1 var2。その後、それを配列に保存するか、直接使用できます。

$ while read -r foo path; do arr=("$foo" "$path"); echo "${arr[1]}"; done < test.txt
./CONTROL/CONTROL.bam

またはread -ra arr(Bash で) を使用してフィールドを配列に直接分割します。

おすすめ記事