业务场景
今天遇到一个业务场景,数据库导出的建表语句是一个整体文件,现在想要将他拆分为多个文件。
代码示例
#!/bin/bash
#By lee
dl(){
n1=1
sed "/$cut1/=" $path1 | sed '/^[0-9]\{1,2\}$/N;s/\n/ /' | while read line
do
num=`echo $line | awk "/$cut1/{print \"$cut1\"}"`
if [[ $cut1 == $num ]];then
echo $line | sed -n 's/^[0-9]\{1,2\} //p'> "`pwd $path1`/$n1.file"
n2=$n1
n1=$[ $n1 + 1 ]
else
echo $line >> "`pwd $path1`/$n2.file"
fi
done
}
read -p "请输入文本路径(绝对路径):" path1
read -p "请输入段落分割符:" cut1
dl path1 cut1
运行示例
演示程序&文件
[lee@localhost liuyuxia]$ pwd
/home/lee/liuyuxia
[lee@localhost liuyuxia]$ ls
lee.sh testLee.sql
[lee@localhost liuyuxia]$ cat testLee.sql
CREATE TABLE LEE1(
COLUMN_A
,COLUMN_B
);
CREATE TABLE LEE2(
COLUMN_A
,COLUMN_B
);
[lee@localhost liuyuxia]$
如上图所示,我要将 table LEE1
、LEE2
单独分割出来。
执行结果
[lee@localhost liuyuxia]$ sh lee.sh
请输入文本路径(绝对路径):/home/lee/liuyuxia/testLee.sql
请输入段落分割符:CREATE
[lee@localhost liuyuxia]$
[lee@localhost liuyuxia]$ ls
1.file 2.file lee.sh testLee.sql
[lee@localhost liuyuxia]$ cat 1.file
CREATE TABLE LEE1(
COLUMN_A
,COLUMN_B
);
[lee@localhost liuyuxia]$ cat 2.file
CREATE TABLE LEE2(
COLUMN_A
,COLUMN_B
);
[lee@localhost liuyuxia]$
at last
:
想建一个数据库技术的交流群,用于磨炼提升技术能力.群号: 130730832
,欢迎大佬前来教学。