t6d*_*t6d 3 linux bash sed strings
我尝试从以下字符串(使用创建who am i)中提取主机名:
username pts/0 2010-10-05 17:30 (www.example.com)
Run Code Online (Sandbox Code Playgroud)
我需要一个解决方案,如果 (www.example.com) 不存在(当我在本地登录时就是这种情况),它也可以工作。此外,该解决方案还必须在who am i返回以下字符串的 Mac 上运行:
username ttys006 Oct 5 16:47 (www.example.com)
Run Code Online (Sandbox Code Playgroud)
问题是 mac 在日期中放置了空格,这使得它难以使用cut。我认为,必须有一个sed用于提取子字符串的解决方案,但是我在弄清楚如何正确使用时遇到了问题sed。
更新:疯狂的方法
这种方法只有在实际存在括号时才有效。如果不是,则会发生以下情况:
$ who am i | cut -f2 -d '(' | tr -d ')'
username ttys006 Oct 5 16:47
Run Code Online (Sandbox Code Playgroud)
Chr*_*rel 15
这就是awk最好的工具。 awk -F"[()]" '{print $2}'应该拉出括号中的内容。如果它不存在,则不打印任何内容。所以...
$ who am i | awk -F"[()]" '{print $2}'
www.example.com
——克里斯托弗·卡雷尔