このようなテキストファイルがあります。
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 で) を使用してフィールドを配列に直接分割します。