微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

linux – grep输出只打印bash脚本中的单行

参见英文答案 > I just assigned a variable, but echo $variable shows something else                                    6个
如何从grep中获取结果以在bash脚本中自行打印?

在终端中使用grep时,输出显示我希望它出现的方式.

例如:

$whois x.x.85.72 | grep 'OrgName\|NetRange\|inetnum\|IPv4'
NetRange:       x.x.85.64 - x.x.85.95
NetRange:       x.x.0.0 - x.x.255.255
OrgName:        xxxxx Technologies Inc.

在bash中使用相同的grep命令时,它会在一行上打印出来.

我的bash脚本的输出

$lookup xx.com
xx.com resolves to: x.x.85.72
NetRange: x.x.85.64 - x.x.85.95 NetRange: x.x.0.0 - x.x.255.255 OrgName:xxxxx Technologies Inc.

我的bash脚本:

#! /bin/bash
VAR1="$1"

IP=`net lookup $VAR1`
echo $VAR1 resolves to: $IP
RANGE=`whois $IP | grep 'OrgName\|NetRange\|inetnum\|IPv4'`
echo $RANGE 

除了解决方案,谁能告诉我为什么这样做?

谢谢你!

解决方法:

您需要引用变量以保留格式:

echo "$RANGE"

代替

echo $RANGE

全部一起:

#!/bin/bash <--- be careful, you have an space after ! in your code
VAR1="$1"

IP=$(net lookup $VAR1) #<--- note I use $() rather than ``
echo $VAR1 resolves to: $IP
RANGE=$(whois $IP | grep 'OrgName\|NetRange\|inetnum\|IPv4')
echo "$RANGE"

鉴于这种:

$date; date
Wed Sep 25 15:18:39 CEST 2013
Wed Sep 25 15:18:39 CEST 2013

让我们打印带有和不带引号的结果:

$myvar=$(date; date)
$echo $myvar
Wed Sep 25 15:18:45 CEST 2013 Wed Sep 25 15:18:45 CEST 2013
$echo "$myvar"
Wed Sep 25 15:18:45 CEST 2013
Wed Sep 25 15:18:45 CEST 2013

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐