【发布时间】:2016-02-24 22:30:00
【问题描述】:
我有一个文件,其中包含我运行的命令的选项。每当我运行命令时,我希望它使用第一行中定义的未注释掉的选项运行。我使用这个 bash 脚本来做到这一点:
while read run opt c; do
[[ $run == \#* ]] && continue
./submit.py $opt $run -c "$c"
break
done < to_submit.txt
文件 to_submit.txt 有这样的条目:
#167993 options/optionfile.py long description
167995 options/other_optionfile.py other long description
...
使用最后一个未注释行中的选项运行提交脚本后,我想在命令成功运行后注释掉该行。
我可以找到我使用的选项的行号,并将其添加到 while 循环中:
line=$(grep -n "$run" to_submit.txt | grep "$opt" | grep "$c" | cut -f 1 -d ":")
但我现在不确定如何在该行之前实际添加 # 。我可能可以使用 head 和 tail 来保存其他行并单独处理该行并将其全部组合回文件中。但这听起来很复杂,必须有更简单的 sed 或 awk 解决方案。
【问题讨论】: