我有一个混合了 shell、Perl 和 Python 脚本的 Linux 文件夹树。所有脚本都没有一致的文件扩展名(.pl、.perl、.py、.sh 或根本没有扩展名)。我需要确定哪些文件是 Perl 脚本,然后添加新的代码行来设置变量(如果该变量不在 Perl 脚本中)。
感谢How to insert newline character after comma in `),(` with sed?我想出了这段代码,它使用 sed 插入新的代码行。
此代码有效,但有更有效的方法吗?
#! /bin/bash
NL='
$|++'
for f in `find "$1" -type f`
do
if [ $(grep -cP "^\#\!/.+/perl" "${f}") -gt 0 ]
then
if [ $(grep -c "$|" "${f}") -eq 0 ]
then
sed -i -r "s/^#!\/(.+)\/perl(.+)$/#!\/\1\/perl\2\\${NL}/g" "${f}"
fi
fi
done