我有一个示例文件,如下所示。这是一个SQL Loader控制文件:
LOAD DATA
APPEND
INTO TABLE XXWIN_TMP_LOADER_TAB
( seq POSITION(1:10) INTEGER EXTERNAL
,h_record POSITION(11:20) CHAR
,h_file_name POSITION(21:55) CHAR
)
APPEND
INTO TABLE XXWIN_SQL_LOADER_TAB
( seq POSITION(1:10) INTEGER EXTERNAL
,h_record POSITION(11:20) CHAR
,h_file_name POSITION(21:55) CHAR
)
APPEND
INTO TABLE XXWIN_SQL_LOADER_TAB
( seq POSITION(1:10) INTEGER EXTERNAL
,h_record POSITION(11:20) CHAR
,h_file_name POSITION(21:55) CHAR
)
我想选择文件中出现的任意数量的表名,这些表名以“XX_”开头,以“_TAB”结尾,并使用 UNIX脚本将其存储到数组中。
请建议。
谢谢, 阿伦
答案 0 :(得分:2)
如果文件语法没有改变(表名以XX
开头,而不是XX_
):
tnames=`grep -o "TABLE XX[^ ].*_TAB" <file_name> | sed 's/TABLE //g'`
for tn in $tnames; do echo $tn; done
更改&lt; file_name&gt;到文件的名称。
答案 1 :(得分:0)
你没有说哪个shell,但由于sh
不支持数组我假设是Bash。
tables=($(sed -n '/TABLE /s/TABLE \(XX[^ ]*TAB\) *$/\1/p' inputfile))
for table in ${tables[@]}
do
echo "$table"
done