Bashループの使用

Bashループの使用

スクリプトで使用するコマンドがありますが、うまくいきます。このコマンドの結果にいくつかのテキストを追加する必要があります。

注文する:

ssh target_server "/home/directory/somescript.sh" | tail -1

上記のコマンドの結果にテキストを追加したいと思います。

結果の例:

This is the original result

予想される結果の例:

This is the original result - target_server

答え1

パイプで接続するsed:

ssh target_server "/home/directory/somescript.sh" | tail -1 | sed 's/$/ - target server/'

構文はですs/regexp/replacement/flags

  • s代替コマンドを呼び出します。
  • /区切り記号です。他の文字を区切り文字として選択できます。
  • $正規表現スロットにあります。$行の終わりと一致します。
  • - target server正規表現スロットに一致するコンテンツを置き換えるテキストです。

代替テキストに/(たとえば- target 01/10)が含まれている場合は、エスケープするか、別の区切り文字を選択できます。

sed 's/$/ - target 01\/10/'
sed 's|$| - target 01/10|'

答え2

次のことを試すことができます。

Bashループの使用

cmd | while read line; do echo "$line - target_server"; done

これはbash組み込みのみを使用するため、生成/破壊されるプロセスの数が少なくなります。

バッシュ機能を使う

単純なbash機能を作成することもできます。定義は次のとおりです。

function postpend() { 
    while read line; do 
        echo "${line}${1}"; # Insert text parameter after the line.
    done;
}

これにより、次のように呼び出すことができます。

cmd | postpend " - target_server" 

AWKを使う

command | awk 'END{print $0 " - target_server"}'

sedを使う

command | tail -1 | sed 's/$/ - target server/'

これが役に立つことを願っています。

関連情報