【发布时间】:2014-05-12 13:46:37
【问题描述】:
有没有办法让这个命令更简单(即不使用 awk 两次):
awk '/cpu MHz/ {print $4}' < /proc/cpuinfo | awk -F'.' 'NR==1 {print $1}'
?
另外,有没有办法避免在这里使用 cut 命令:
ip addr show dev eth0 | awk '$1=="inet" {print $2}' | cut -f1 -d '/'
?
谢谢。
【问题讨论】:
-
在我看来这确实应该是两个问题。另外,我建议将示例输入和预期输出添加到问题中。例如,
/proc/cpuinfo/的内容、ip addr show dev eth0的输出以及您尝试提取的部分。 -
包含输入样本和所需输出总是有帮助的。
-
awk '/cpu MHz/ { print int($4) }' /proc/cpuinfo?ip addr show dev eth0 | awk '/inet / { print gensub("/.*", "", "", $2) }'? -
@twalberg 除了使用
int()函数,您只需添加0即可。awk '/cpu MHz/ { print $4+0 }' /proc/cpuinfo -
@jaypal 我怀疑这取决于版本。我的
awk版本在我echo 1.5 | awk '{print $0+0}'时给出“1.5”... 或者这是小数点后的数字全为零的结果。不过,在一般情况下显然不是这样......