2017-09-19 11 views
-1

ソースファイルから.svまたは.vファイルのパスを表す文字列を抽出して配列に格納します。2単語間でデータを抽出し、すべての結果をシェルスクリプトを使用して配列に格納する方法

サンプルソースファイル:

#!/bin/csh 

vlogan -sverilog -xzy ../common/compil_xyz/displayer.sv ../common/compil_BC/bridge.v ../common/compil_fgh/core.v ../common/compil_mno/counter.v 
vlogan -xzy -sverilog ../common/compil_rty/top_wrapp1.v 
vcs -o simv_${app} ${VBH_LKJ_FLAGS} -sverilog XfgKL 

期待される出力配列:

out[0] : ../common/compil_xyz/displayer.sv 
out[1] : ../common/compil_BC/bridge.v 
out[2] : ../common/compil_fgh/core.v 
out[3] : ../common/compil_mno/counter.v 
out[4] : ../common/compil_rty/top_wrapp1.v 
+0

'csh'スクリプトから出力配列を使いたくないといいと思います。これまでにお試しいただいた内容をお見せしてから、利用可能なツールの理解を深めてください。がんばろう。 – shellter

答えて

1

あなたはgrep -oを使用することができます。

set arr = (`grep -Eo '[^[:blank:]]+\.(sv|v)\b' file | sed 's~^~/~'`) 

printf '%s\n' $arr 

出力:

/../common/compil_xyz/displayer.sv 
/../common/compil_BC/bridge.v 
/../common/compil_fgh/core.v 
/../common/compil_mno/counter.v 
/../common/compil_rty/top_wrapp1.v 
+0

ありがとうございます。その働き。 各出力の前に/を追加したい場合。例えば /../common/compil_xyz/displayer.sv /../common/compil_BC/bridge.v /../common/compil_fgh/core.v /../common/compil_mno/に従うようcounter.v /../common/compil_rty/top_wrapp1.v –

+0

出力配列自体を更新するには –

+0

私はcshを使用していますので、コマンドを変更しました: set out = '(grep -Eo しかし、それは動作していません –

関連する問題