这这篇文章解释了如何从终端在文件开头添加一行。但如果我不知道文件中的某行是哪一行,如何从终端修改它?
我应该修改这一行eni=10.*10**9
来eni=10.*10**8
标注指数。这是第二次eni
出现
答案1
我想这就是你想要的:
line=$(grep -n -m2 "eni" file | tail -n1 | cut -f1 -d:)
sed -i $line's/9$/8/' file
答案2
由于 Ubuntu 现在附带了 GNU Awk v4.0+(它提供了一个inplace
模块),你可以执行以下操作
gawk -i inplace '/eni=/ {if (++c == 2) sub(/10\*\*9/,"10**8")} 1' file
您可以根据需要使正则表达式变得更具体/eni=/
或更不具体。/10\*\*9/
perl 也类似
perl -i -pe 'if (/eni=/) {s/10\*\*9/10\*\*8/ if (++$c == 2)}' file