使用 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 函数

您还可以创建一个简单的 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/'

我希望这有帮助。

相关内容