【问题标题】:Loop through lines of file and add continuing numbers遍历文件行并添加连续数字
【发布时间】:2014-02-15 13:19:48
【问题描述】:

我尝试修改文件中的行,其中每一行都是一个命令,我需要提供连续的数字作为不同行的参数。

最佳第一 --> 最佳第一 -D 5 -N 5

最佳第一 --> 最佳第一 -D 5 -N 10

最佳第一 --> 最佳第一 -D 5 -N 15

...

最佳第一 --> 最佳第一 -D 10 -N 15

...

最佳第一 --> 最佳第一 -D 100 -N 100

我尝试从 -N 选项开始,但没有成功:

counter=5; while read line; do echo $line | sed -e  "s/BestFirst/BestFirst -D 5 -N $counter/"; counter=$[ counter+5 ]; done < attribute_selectors_cfssubeval_bestfirst_various_parameters.csv

这或多或少会返回正确的内容,但不会修改文件本身。

如何正确修改文件?

【问题讨论】:

  • 原始文件真的只是重复多次的字符串“BestFirst”吗?使用适当的 awk 脚本从头开始生成整个文件似乎比在输入文件的每一行单独调用 sed 更快。
  • @chepner 我很确定你是对的,我看到了一些解决 awk 类似问题的方法。我只是不太了解 awk,无法使用它。

标签: bash loops sed count


【解决方案1】:

您只是忘记在 sed 命令中确定输出文件。请尝试以下操作:

counter=5; while read line; do echo $line | sed -e  "s/BestFirst/BestFirst -D 5 -N $counter/" >> result.csv; counter=$[ counter+5 ]; done < attribute_selectors_cfssubeval_bestfirst_various_parameters.csv

结果将在文件 results.csv 中

编辑:如果您想修改您正在阅读的同一个文件:我认为这不是一个好主意。如果您希望文件具有完全相同的名称,则可以在删除源后重命名结果文件。

【讨论】:

  • 关于您的编辑:我就是这样做的。修改或创建第二个并重命名 - 没有太多额外的努力
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-11-26
  • 2014-07-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-12
  • 1970-01-01
相关资源
最近更新 更多