在 Linux 中,如何将文件特定行号中的数字乘以 2(双精度)?

Joh*_*809 3 linux awk sed

文件_A

Name: John Smith
Grade: 8
Institute: Baldwin
Number of entries: 125
State: Texas
Run Code Online (Sandbox Code Playgroud)

文件_B

Name: David Buck
Grade: 9
Institute: High Prime
Number of entries: 123
State: California
Run Code Online (Sandbox Code Playgroud)

有许多此类类似的文件,其中条目数(位于所有文件中的第 4 行)必须加倍。

对于 File_A,它应该是 250,对于 File_B,它应该是 246。

如何对 Linux 中的所有文件执行此操作?(使用 sed 或 awk 或任何其他命令)

尝试过的命令:

sed -i '4s/$2/$2*2/g' *.txt               (nothing happening from this)
awk "FNR==4 {sub($2,$2*2)}" *.txt         (getting syntax error)
Run Code Online (Sandbox Code Playgroud)

Rav*_*h13 5

使用您显示的示例,请尝试以下awk代码。简单的解释是查找/搜索字符串/Number of entries:,然后将 2 乘以最后一个字段的值并将其保存在自身中,然后通过提及 来打印行1

awk '/Number of entries:/{$NF = ($NF * 2)} 1' File_A File_B
Run Code Online (Sandbox Code Playgroud)

运行上面的命令,它将在屏幕上打印输出,一旦您对输出感到满意并希望将输出保存到 Input_file 本身中,那么您可以尝试 的awk选项-inplace(在 GNU awk4.1+ 版本等中可用)。

另外,如果您的文件扩展名是 .txt,则将其传递给上面的awk程序本身,awk它本身可以读取多个文件。