Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Shell 使用UNIX脚本从文件中获取表名_Shell_Unix_Ksh - Fatal编程技术网

Shell 使用UNIX脚本从文件中获取表名

Shell 使用UNIX脚本从文件中获取表名,shell,unix,ksh,Shell,Unix,Ksh,我有一个样本文件如下所示。这是一个SQL加载程序控制文件: 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

我有一个样本文件如下所示。这是一个SQL加载程序控制文件:

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”开头,以“\u TAB”结尾,并使用UNIX脚本将其存储到数组中。

请给我一些建议

谢谢,
Arun

如果文件语法没有改变(表名以
XX
开头,而不是
XX
):

tnames=`grep-o“表XX[^]._TAB”| sed's/TABLE//g'`
对于tn,单位为$tnames;不要重复$tn;完成

将更改为文件名。

您没有说是哪个shell,但是由于
sh
不支持数组,我假设是Bash

tables=($(sed -n '/TABLE /s/TABLE \(XX[^ ]*TAB\) *$/\1/p' inputfile))
for table in ${tables[@]}
do
    echo "$table"
done

不工作,我这样写:#/usr/bin/ksh clear echo“测试脚本运行”echo tnames=
grep-o“表XX[^].*u TAB“数据加载程序”\u CTL.CTL | sed's/TABLE//g'
用于tn,单位为$tnames;不要重复$tn;完成此操作将不提供任何输出。
echo tnames=…
不分配
tnames
。去除回声。另外,我为
sh
哪个sh
)写的。确实有效/usr/bin/ksh clear echo“Test Scripts Running”echo tables=($(sed-n'/TABLE/s/TABLE(XX[^]*TAB)*$/\1/p'DATA_LOADER_CTL.CTL))用于${tables[@]}do echo“$TABLE”中的表
tables=($(sed -n '/TABLE /s/TABLE \(XX[^ ]*TAB\) *$/\1/p' inputfile))
for table in ${tables[@]}
do
    echo "$table"
done