shell—如何将单个文件拆分为mutliple.sh文件并逐个执行

jhiyze9q  于 2021-06-01  发布在  Hadoop
关注(0)|答案(1)|浏览(236)

我有一个文件,其中包括超过40000行mv&cp命令。我想把它作为一个shell文件拆分成20个或n个文件,然后依次运行它,例如,如果a.sh完成了,那么我想执行b.sh,依此类推
文件的示例

hdfs dfs -mv /source/path/file.xt /destination/path/ &
hdfs dfs -mv /source/path/file.xt /destination/path/ &
hdfs dfs -mv /source/path/file.xt /destination/path/ &
.
.
hdfs dfs -mv /source/path/file.xt /destination/path/ &

我使用上述逻辑作为脚本的一部分。

b4lqfgs4

b4lqfgs41#

你不需要分割文件。只是放 wait 每隔20行,如下所示,这将解决您的问题:-

hdfs dfs -mv /source/path/file.xt /destination/path/ &
 .
 .
 #after 20 line or more as per your requirement
 wait
 hdfs dfs -mv /source/path/file.xt /destination/path/ &
 .
 .
 wait
 hdfs dfs -mv /source/path/file.xt /destination/path/ &
 .
 .
 wait

添加 wait 每隔20行使用以下命令

awk ' {print;} NR % 20 == 0 { print "wait"; }' yourfile.sh > newfile.sh
                      ^ change this number if you want to insert `wait` in a specific place for example if you want to put `wait` every after 30 lines make it like below

awk ' {print;} NR % 30 == 0 { print "wait"; }' yourfile.sh > newfile.sh

finally:-

mv  newfile.sh  yourfile.sh
``` `yourfile.sh` 是有40000行命令的文件。

****总是备份原始文件。

相关问题