テキストと数字を含む文字列を改行で書き換えてテキストを挿入する

テキストと数字を含む文字列を改行で書き換えてテキストを挿入する

つまり、単一行の出力文字列を複数の行に分割し、各ソース文字列にホスト名をタグ付けしたいと思います。

ホスト名 プロセス名 CPUCore

出力=$(ssh -q -o "StrictHostKeyChecking yes" $ssh_host 'ps -eo comm,lastcpu | grep rrcp')

次のように出力を返してループを挿入するにはどうすればよいですか?

rrcpd 17 rrcpd 0

次のように書き直されました。

Hostname1 rrcpd 17
Hostname1 rrcpd 0

ノート

  • 数字は0〜32です。

  • ホスト名は変数文字列$ myhostです。

  • テキストが変更されます。これは厳密に言うと、rrcpdではないという意味です。

    rrcpd 17 rrcpd 0

    チーズ3ケーキ8

    猫9個3

各ホストで実行するコマンド

出力=$(ssh -q -o "StrictHostKeyChecking yes" $ssh_host 'ps -eo comm,lastcpu | grep rrcp')

grepを削除すると、3〜5個のプロセスを経て出力が再び出ることができるので、各出力を分割してソースファイルにホスト名を追加して、各出力にラベルを付けることができるようにしたいと思います。各ホストでどのプロセスが実行されているかを確認しています。

rrcpd 0 rrcp_mon.sh 24

RRCPD 0

RRCPD 0

rrcpd 0 rrcpd 1

rrcpd 0 rrcpd 0 rrcp_mon 24 rrcp_mon 24

RRCPD 0

RRCPD 0

rrcpd 17 rrcpd 0

ard 9 ssh 32 httpd 21 bax 22

下記の内容を修正して動作させました。

#!/bin/bash
for remote in $(cat ssh_hosts2.txt)
do
    ssh -q -o StrictHostKeyChecking=yes "$remote" ps -eo comm,lastcpu |
    sed "s/^/$remote /"
done

ベストアンサー1

これを試してください、

与えられたサンプル出力を/tmp/test.txtファイルに保存しました。

 xargs -n 2 | sed 's/^/Hostname1 /' 
  • -n行あたりの最大パラメータを示します。

例えば。

cat /tmp/test.txt  | xargs -n 2 | sed 's/^/Hostname1 /g' 
Hostname1 rrcpd 17
Hostname1 rrcpd 0
Hostname1 Cheese 3
Hostname1 cakes 8
Hostname1 Cats 9
Hostname1 dogs 3

おすすめ記事