我有一个在脚本上使用的命令,并且运行良好。我需要在该命令的结果中附加一些文本。
命令:
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/'
我希望这有帮助。