2016-07-04 9 views
1

内の文字列で区切られた文字列を分割します。は、私は、この種の文字列を分割しようとしているbashの

私はIFSと試みたが、それが唯一のIFS =と1つの文字(のために働くようだ「 - >」私は 『FILE1』と 『> FILE2』を取得... this articleに基づいて

、私は別のを試してみましたアプローチ:

awk 'BEGIN {FS=" -> "} {xxx}' <<< $f 

問題は私が後で使用できる変数に$ 1、$ 2影響するように成功していないということです...

答えて

1

あなたはいくつかの方法でこれを行うことができます:

str="file1 -> file2" 

echo "Fast" 
var1="${str% -> *}" 
var2="${str#* -> }" 
printf "%s=%s.\n" var1 "${var1}" var2 "${var2}" 

echo "With cut" 
var1="$(echo ${str}|cut -d" " -f1)" 
var2="$(echo ${str}|cut -d" " -f3)" 
printf "%s=%s.\n" var1 "${var1}" var2 "${var2}" 

echo "With read" 
read -r var1 arrow var2 <<< ${str} 
+0

非常にクリアです。どうもありがとうございました! – Sharcoux

+0

あなたはどこで読んだのですか?私はドキュメンテーションを見つけられず、 'man read'は多くの助けにはならない... – Sharcoux

+0

私はこれをどこかで、おそらくhttp://stackoverflow.com/a/19052249/3220113で学んだ。 –

1

あなたは$()使用することができます。

ARRAY=($(awk 'BEGIN {FS=" -> "} {for(i=1;i<=NF;i++)print $i}' <<< $f)) 

を、別の変数として値を抽出します:

VARIABLE="$(awk 'BEGIN {FS=" -> "} {for(i=1;i<=NF;i++)print $i}' <<< $f)" 

あなたは、配列に結果を割り当てることができます

${ARRAY[0]} 
${ARRAY[1]} 
and so on... 

をそして、あなたの変数に割り当てます。

+0

を私が印刷できる方法を理解し、どのように私は後でスクリプトでそれを使用することができますか? – Sharcoux

関連する問題