Joe DiNottra
Joe DiNottra

Reputation: 1008

Concatenate results of commands in Bash

I was looking for a single one-liner to produce a line with all data:

These four [separate] commands produce the info I need, but I don't know how to concatenate them into a single line:

$ cat /proc/cpuinfo | grep "model name" | sed -n -e 's/^.*: //p'
ARMv6-compatible processor rev 7 (v6l)
$ lscpu | grep "CPU(s):" | awk '{print $2}'
1
$ lscpu | grep "CPU min MHz:" | awk '{print $4}'
700.0000
$ lscpu | grep "CPU max MHz:" | awk '{print $4}'
1000.0000

And I wanted to get:

ARMv6-compatible processor rev 7 (v6l) x1 @700 MHz (max @1000 MHz)

Upvotes: 1

Views: 172

Answers (2)

Jetchisel
Jetchisel

Reputation: 7791

One way.

paste -d ' ' <(awk '/^model name/{sub(/.+: /,"");print;exit}' /proc/cpuinfo) <(lscpu | awk '/CPU min MHz:/{printf " (max @%d MHz) ", $4} /CPU max MHz:/{printf "@%d MHz",  $4} /^CPU\(s\):/{printf "x%s ", $2}')

Upvotes: 1

Gonzalo Matheu
Gonzalo Matheu

Reputation: 10064

just using echo

echo $(cat /proc/cpuinfo | grep "model name" | sed -n -e 's/^.*: //p') \
   x$(lscpu | grep "CPU(s):" | awk '{print $2}') \
   @$(lscpu | grep "CPU min MHz:" | awk '{print $4}') \
   '( max' $(lscpu | grep "CPU max MHz:" | awk '{print $4}') ')'

By the way, you could use just grep "model name" /proc/cpuinfo instead of cat /proc/cpuinfo | grep "model name"

Upvotes: 1

Related Questions