使用shell脚本基于char拆分字符串

时间:2014-12-17 18:06:14

标签: linux shell unix

我想从字符串中提取表名,并使用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脚本的新手:)

1 个答案:

答案 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来说这是一个简单的正则表达式。