首页 > 解决方案 > Bash:我如何(1)从包含一列数字的文件中的“i”行中读取一个数字,以及(2)将值分配给一个变量?

问题描述

1.2345
10.6789
100.101112
...
i = 1
while read line
do
    var[$i]="$line"
    find ... # My sed expression for finding and replacing a word in file (i).
    i=$((i+1))
done < newNumbers

但是,这不是一个好的解决方案。“newNumbers”太长了,需要几天时间。我从“newNumbers”中知道我需要的那一行。它是第i行,对应于文件i。所以我想从第i行的“newNumbers”中读取值。我无法获得正确的语法来执行此操作(我没有使用 bash 的经验)。我在 Mac 上使用 GNU sed 并检查了几个似乎与此处相关的问题。导致“char1:缺少命令”或“iq;d”:命令需要 \ 后跟文本类型错误的示例是:

gsed -n -e "${i}" newNumbers
gsed 'iq;d' newNumbers
gsed "${i}q;d" newNumbers

我不知道这是 Mac 问题(GNU sed)还是语法问题。感谢您的任何帮助。

标签: bashmacosfileiofind

解决方案


这是有效的,但我不知道为什么!我会发布它,因为在处理输入和输出文件时可能还有其他人需要处理这个问题。

在我的 for 循环文件 i 中,从 0 开始,

j=$((i+1))
newNumber_i=$(gsed "${j}q;d" newNumbers)
echo ${i%}

我需要“回声”声明。我是从 ghostdog74 的回复中得到的: 如何将 sed 的输出读取到变量中


推荐阅读