我试图只提取主机名和该主机名中的命令状态,但找不到有用的grep选项来执行此操作。
server1
bash: adinfo: command not found
我尝试使用grep/sed,它只提供主机名和adinfo命令的命令输出。
more file3 |grep 'com.*nd'
bash: adinfo: command not found
bash: adinfo: command not found
所以我得到了部分输出,但没有上面列出的服务器名称。理想情况下,它应该列出服务器名称和那个命令输出。
任何帮助都很感激。
more file3 |grep 'com.*nd'
为了澄清,我有一个包含以下内容的大文件:
server1
Local host name: server1
Joined to domain: domain.com
Joined as: server1.domain.com
Pre-win2K name: server1
Current DC: domain.com
Preferred site: Datacenter
Zone: servers Zone
Last password set: 2022-03-11 02:23:55 EST
CentrifyDC mode: connected
Licensed Features: Enabled
server2
bash: adinfo: command not found
我只想看到'adinfo'命令不能运行的地方,沿着服务器名称。我可以缩小到
# more file3 |grep -e 'Loc.*me' -e 'Cen.*de'
Local host name: server1
CentrifyDC mode: connected
但不是相反,我只能看到adinfo不工作的服务器。
5条答案
按热度按时间iyr7buue1#
使用
grep
和paste
如下:grep -P '\S' infile
:选择输入文件中的非空文件。grep -P -B1 '^bash: adinfo'
:选择以bash: adinfo
开头的行。paste - -
:将每两行合并为一行。gorkyyrv2#
2o7dmzc53#
既然你说“我只想看看'adinfo'命令不能运行的地方,沿着服务器名称”-使用任何awk:
jobtbby34#
这应该做到:
NF==1 f=$1}
如果行上有一个文件,则假定它是服务器名称并将其保存在变量f
中/adinfo/ {print f,$0}
如果行包含adinfo,则打印变量f中的服务器名称和adinfo信息ivqmmu1c5#
GNU
sed
解决方案,让file.txt
内容然后
给出输出
说明:
-n
关闭默认打印,对于包含adinfo
的行,追加换行符并保留内容(G
),然后打印(p
),对于至少包含1个字符的行,将内容放入保留空间(.
)。观察名称确实出现在 * 命令结果之后。