Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Shell 使用gawk将系统主机名(不带换行符)前置到字符串_Shell_Awk_Gawk - Fatal编程技术网

Shell 使用gawk将系统主机名(不带换行符)前置到字符串

Shell 使用gawk将系统主机名(不带换行符)前置到字符串,shell,awk,gawk,Shell,Awk,Gawk,我正在尝试使用gawk将系统主机名前置为字符串。我不在,我可以做这样的事情: interesting_command.sh|gawk 'print system("hostname") "\t" $0' 但最终会打印: hostname.example.com Line 1 text hostname.example.com Line 2 text 等等 理想情况下,我正在寻找hostname的输出,但是有任何换行符或空格 字符被剥去 我该怎么做呢?这个怎么样 echo "1

我正在尝试使用gawk将系统主机名前置为字符串。我不在,我可以做这样的事情:

interesting_command.sh|gawk 'print system("hostname") "\t" $0'
但最终会打印:

hostname.example.com
    Line 1 text
hostname.example.com
    Line 2 text
等等

理想情况下,我正在寻找
hostname
的输出,但是有任何换行符或空格 字符被剥去

我该怎么做呢?

这个怎么样

echo "1
2
3" |awk 'BEGIN{"hostname" | getline hstnm ; }; {print hstnm "\t" $0}'
myhost       1
myhost       2
myhost       3
这里的计划是使用
getline
将主机名的输出捕获到var(hstnm)中,然后使用该变量根据需要打印该值。我有一半希望在BEGIN语句中包含一个
子(/\n$/,“”,hstnm)
,但正如您所看到的,这不是必需的


IHTH.

您的命令给了我一个语法错误。在添加缺少的大括号后,我在其他行中获得主机名,如您在示例输出中所示,但在包含shell脚本数据的行中,我得到0作为第一个字符,因为这是
system()
函数的返回值。