grep 用 ',' 格式化两个数字

grep 用 ',' 格式化两个数字
sensors|grep -oP "Core 1:\s*\+\K[0-9]+" >> lmsenreading1.txt

然后:

sensors|grep -oP "Core 0:\s*\+\K[0-9]+" >> lmsenreading0.txt

.txt然后用分隔符连接两个文件,。例如,这应该给出:65,66

如果我使用

sensors|grep -oP ":\s*\+\K[0-9]+"

我的输出是

27

65

66

27不是必需的。

如何格式化输出以sensors|grep -oP ":\s*\+\K[0-9]+" 给出:

65,66

答案1

您可以 grep 查找“Core”。它匹配 Core 0 和 Core 1(在我的系统 0 和 2 上):

sensors | grep -oP "Core .:\s*\+\K[0-9]+" | tr "\n" "," 
46,42,

并使用 tr(anslate) 将换行符更改为逗号。

这会在最后为您提供一个额外的逗号。

您可以通过从开始 (0) 到结束前的一 (-1) 的子字符串来摆脱它:

sens=$(sensors | grep -oP "Core .:\s*\+\K[0-9]+" | tr "\n" ",")
echo ${sens: 0: -1}
47,44

答案2

不需要文件或变量,只需使用printf命令替换:

printf '%s,%s\n' $(sensors | grep -oP 'Core [01]:\s*\+\K[0-9]+')

我的系统上的输出:

53,54

请注意对grep 正则表达式:而不是单个字符01为了指定核心编号,字符类[01]会检查两个核心。

相关内容