Shell 使用gawk将系统主机名(不带换行符)前置到字符串
我正在尝试使用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
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()
函数的返回值。