我的txt文件具有以下结构:
# packages in environment at /scratch/hello/anaconda3:
#
# Name Version Build Channel
_ipyw_jlab_nb_ext_conf 0.1.0 py37_0
absl-py 0.7.1 pypi_0 pypi
alabaster 0.7.12 py37_0
anaconda-client 1.7.2 py37_0
anaconda-navigator 1.9.7 py37_0
anaconda-project 0.8.2 py37_0
annoy 1.14.0 pypi_0 pypi
我想要conda install
此txt文件中列出的所有软件包,并指定了版本。
我的想法是for循环所有行(从第4行开始),从第一个字段和第二个字段中获取值,然后将它们保存到PACKAGE
和中VERSION
,然后通过调用安装软件包conda install $PACKAGE=$VERSION
(例如,conda install pandas=0.20.3
我想写一个shell脚本来做到这一点。我写了一个演示文件只是为了阅读第i行,这是第二个字段:
#!/bin/bash
LINES=$(wc -l < conda_env.txt)
for i in {4...10}
do
awk -F '|' 'NR==${i}{print $2}' conda_env.txt
done
它给我的错误:awk: bailing out at source line 1
。
您可以尝试以下方法:
#!/bin/bash
while read -r package version _; do
[[ $package = "#"* ]] && continue # skip the comment lines
# remove "echo" if the output looks good
echo conda install "$package=$version"
done < "conda_env.txt"
输出:
conda install _ipyw_jlab_nb_ext_conf=0.1.0
conda install absl-py=0.7.1
conda install alabaster=0.7.12
conda install anaconda-client=1.7.2
conda install anaconda-navigator=1.9.7
conda install anaconda-project=0.8.2
conda install annoy=1.14.0
如果输出行符合您的期望,则删除echo
并执行脚本。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句