我想从字符串中提取表名,并使用shell脚本将其移动到数组中。
输入字符串格式:
APPNAME_TABLE_NAME_DATE
示例输入数据:
AAA_STUDENT_ADDR_12172014
AAA_STUDENT_DEPT_12172014
AAA_STUDENT_SEC_12172014
AAA_STUDENT_LIST_12172014
out应该是:
STUDENT_ADDR
STUDENT_DEPT
STUDENT_SEC
STUDENT_LIST
可以请任何帮助我,我是shell脚本的新手:)
答案 0 :(得分:1)
如果您已经老了并且需要在shell中100%执行此操作,请查看内置变量$ IFS的定义以及" set"内置命令。在您的阅读循环中,执行IFS=_
,然后使用"设置"使用行的拆分组件加载位置参数($ 1,$ 2等);然后将结果字符串构建为" $ 2_ $ 3"。 (不要忘记重置IFS。)
如果你是新学校,可以使用参数扩展的remove-prefix和remove-suffix功能来完成。你的任务是撕掉第一列和最后一列(" AAA _"" _12172014")。如果输入行在变量$ line中,那么
ripfirst=${line#*_}
riplast=${ripfirst%_*}
这将在$ riplast中保留正确的值。
如果您可以充分利用Unix或Linux shell环境,那么对于sed来说这是一个简单的正则表达式。