Unix-为其他环境准备转储文件
我和我的一个朋友在做一个项目,我们安装了两个系统,一个用于生产,一个用于测试。开发环境使用与生产环境相同的数据库名称,因此我可以直接在那里导入转储,但由于测试环境使用另一个数据库名称托管,我必须更改转储文件中的名称 由于转储文件很大,而且我太懒了,所以我希望有一个脚本或一行命令Unix-为其他环境准备转储文件,unix,sed,gzip,gunzip,Unix,Sed,Gzip,Gunzip,我和我的一个朋友在做一个项目,我们安装了两个系统,一个用于生产,一个用于测试。开发环境使用与生产环境相同的数据库名称,因此我可以直接在那里导入转储,但由于测试环境使用另一个数据库名称托管,我必须更改转储文件中的名称 由于转储文件很大,而且我太懒了,所以我希望有一个脚本或一行命令 解压缩特定文件夹中最新的*.gz文件 将所有发生的db1替换为db2 使用与1中相同的文件名压缩sql文件。但是后缀是“test_uz”(或其他任何东西) 脚本运行后,我希望有原始转储文件和测试环境的新转储文件。我不需要
gunzip -c `ls -t *.gz | head -1` | sed -i 's/db1/db2/g' `ls -t *.sql | head -1` | gzip `ls -t *.sql | head -1` test_`ls -t *.gz | head -1`
但我总是以sed抱怨找不到输入文件而告终
有人能帮我吗?如前所述,我不在乎它是脚本还是使用管道的单行命令,只要它可以工作;-) 我建议您不要使用旧的和不推荐的back tics。这使得这句话很难读。请使用这样的括号:
gunzip-c$(ls-t*.gz | head-1)| sed-i's/db1/db2/g'$(ls-t*.sql | head-1)| gzip$(ls-t*.sql | head-1)test$(ls-t*.gz | head-1)
我不知道backtips不受欢迎,我真的很感激sed-i
在管道上没有多大意义。您是否认为-i
不区分大小写还是什么?它告诉sed就地编辑输入文件。因此,它抱怨没有输入文件,只有一个管道。