我在“备份”目录中有很多bash脚本 $ tail -n +1 -- *.sh
该尾巴的输出类似于:
==> do_stuff.sh <==
#! /bin/bash
cd ~/my_dir
source ~/my_dir/bin/activate
python scripts/do_stuff.py
==> do_more_stuff.sh <==
#! /bin/bash
cd ~/my_dir
python scripts/do_more_stuff.py
这些都是2-10行的相当简单的脚本。给定该输出tail
,我想用相同的内容重新创建所有上述文件。也就是说,我在寻找一个可以摄取上面的文字,并创建一个命令do_stuff.sh
,并do_more_stuff.sh
与相应的内容。
这是一项一次性的任务,因此我真的不需要任何健壮的工具,而且我相信只要文件很简单(例如,文件中实际上都没有包含==>
)就不会有什么大的情况。
我从尝试提出一个匹配的正则表达式开始,它看起来可能像这样(==>.*\.sh <==)(.*)(==>.*\.sh <==)
,但是我一直坚持要让它捕获文件名,内容并将其输出到文件。
有任何想法吗?
假设您的备份文件名为backup.txt
perl -ne "if (/==> (\S+) <==/){open OUT,'>',$1;next}print OUT $_" backup.txt
以上版本适用于Windows
* nix上的固定版本:
perl -ne 'if (/==> (\S+) <==/){open OUT,">",$1;next}print OUT $_' backup.txt
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句