我对使用 awk/sed 很陌生
所以,我有一个名为 performance.log 的文本文件,其中包含以下信息
CPU 1 2 3 4 5 6
RAM 2 3 4 5 6 7
HAR 3 4 5 6 7 8
在 performance-eval.sh 的代码中,函数生成以下信息
Cur_CPU=10
Cur_RAM=11
Cur_HAR=13
我想将 Cur_CPU、RAM、HAR 插入并保存到 performance.log。 Cur_CPU 将转到第一行,第二列 Cur_RAM 将转到第二行,第二列 Cur_HAR 会到第三行第二列
因此生成的 performance.log 将是
CPU 10 1 2 3 4 5 6
RAM 11 2 3 4 5 6 7
HAR 13 3 4 5 6 7 8
我不确定如何将 3 个不同的值添加到 3 个不同的列中。 感谢您的帮助!
最佳答案
最简单的解决方案是使用join
命令,但首先您需要处理生成附加信息的函数的输出:
function | sed -e 's/^Cur_//;s/=/ /' | sort > myfile2.txt
join myfile2.txt myfile1.txt -1 1 -2 1
我们首先从每行的开头删除 Cur_
,然后用空格字符替换 =
。此外,join 期望两个输入都正确排序。
-1 1
参数告诉 join 对于第一个文件,它应该使用第一个字段作为连接字段。类似地,-2 1
告诉 join 对于第二个文件,它也应该使用第一个字段(在某些实现中,您可以缩短为单个 -N 1
,因此它对两个文件都使用第一个字段)。
连接字段的用法如下:当连接在第一个文件中找到与第二个文件中的行具有相同连接字段的行时,输出包含合并的行。请注意,命令行中文件的顺序对于最终输出中字段的顺序很重要。
希望这有帮助 =)
关于linux - 向每列添加多个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12843149/