如何从文件名中读取值并在文件中读取 insert/replace 值?
how to read a value from filename and insert/replace it in the file?
我必须 运行 许多 python 脚本,它们仅在一个参数上有所不同。我将它们命名为 runv1.py、runv2.py、runv20.py。我有原始脚本,比如 runv1.py。然后我通过
制作我需要的所有副本
cat runv1.py | tee runv{2..20..1}.py
所以我有 runv1.py,.., runv20.py。但仍然是所有参数中的参数 v=1 。
问:如何也替换v参数从文件名中读取?所以例如在 runv4.py 然后 v=4。我想知道是否有单行 shell 命令或命令组合。谢谢!
PS: 当文件太多时,直接编辑每个文件不是一个合适的解决方案。
我认为下面的 for 循环可以达到你的目的
for i in `ls | grep "runv[0-9][0-9]*.py"`
do
l=`echo $i | tr -d [a-z.]`
sed -i 's/v/'"$l"'/g' runv$l.py
done
下面的命令是将参数传递给从文件名本身提取的脚本
ls | grep "runv[0-9][0-9]*.py" | tr -d [a-z.] | awk '{print "./runv"[=11=]".py "[=11=]}' | xargs sh
最后你可以使用 python 或 bash 或 ksh 代替 sh。
我必须 运行 许多 python 脚本,它们仅在一个参数上有所不同。我将它们命名为 runv1.py、runv2.py、runv20.py。我有原始脚本,比如 runv1.py。然后我通过
制作我需要的所有副本cat runv1.py | tee runv{2..20..1}.py
所以我有 runv1.py,.., runv20.py。但仍然是所有参数中的参数 v=1 。
问:如何也替换v参数从文件名中读取?所以例如在 runv4.py 然后 v=4。我想知道是否有单行 shell 命令或命令组合。谢谢!
PS: 当文件太多时,直接编辑每个文件不是一个合适的解决方案。
我认为下面的 for 循环可以达到你的目的
for i in `ls | grep "runv[0-9][0-9]*.py"`
do
l=`echo $i | tr -d [a-z.]`
sed -i 's/v/'"$l"'/g' runv$l.py
done
下面的命令是将参数传递给从文件名本身提取的脚本
ls | grep "runv[0-9][0-9]*.py" | tr -d [a-z.] | awk '{print "./runv"[=11=]".py "[=11=]}' | xargs sh
最后你可以使用 python 或 bash 或 ksh 代替 sh。