2016-06-17 13 views
0

Linux(RHEL 6.x/7.x)で以下の作業を行ったが、HP-UX(B.11.23/B.11.31)。AWKの複数行出力をUNIXのArrayに挿入する方法

私の目標は、両方のenvで同じブロックを動作させることではなく、OSに基づいて別々に実行するように強制できます。しかし、以下を実行する必要があります。

Unixで次のような簡単な方法を見つけるのを手伝ってください。

ABC="/u01/app/oracle /u02/app/oracle /u03/app/oracle" 

array=($(echo $ABC | awk -F' ' '{for (i = 0; ++i <= NF;) print $i}')) 

for i in "${array[@]}"; do echo $i; done 

O/P ::

/u01/app/oracle 
/u02/app/oracle 
/u03/app/oracle 
#私は上記すぎのUnixで行わ同じものを取得したい

。問題は、複数行のawk出力をRHELで可能なようなワンショットで配列に挿入する方法を見つけることができないということです。

+1

「ABC =(/ u01/app/oracle/u02/app/oracle/u03/app/oracle)」と言ってみませんか? – fedorqui

+0

HP-UXシステムにはどのようなシェルがありますか? –

+0

私は基本的に、既存のデータファイルのためにデータベースによって使用されるディレクトリを取得しています。間に改行の代わりにスペースが付いています。 ABC = sqlplus -s/as sysdba << EOFセット・フィード・オフ・セット・ヘッダー・オフ・セット・フィードバックオフdba_data_filesのselect distinct(substr(file_name、1、instr(file_name、 '/'、-1,1))) EOFを終了してください。そうすれば、上記の方法でかなりフォーマットされます。私はkornシェル(ksh)を使用しています –

答えて

1

私はこれを行う方法を見つけました。良いことは、LinuxとUnixの両方で動作します。

countArr=0 
for i in $ABC; do array[$countArr]=$i; countArr=$((countArr+1)); done 
for i in "${array[@]}"; do echo $i; done 
関連する問題