Perl删除新行

时间:2015-07-14 16:22:53

标签: regex perl newline

我似乎无法通过在linux服务器上执行命令从输出中删除新行并尝试了几种不同的方式

继承我的代码第一次尝试

$location = `curl -m 5 -sI 216.58.219.206 | grep "Location:"`;
chomp ($location);
print "before\n";
print "$location";
print "after\n";

输出,不起作用,用新行打印。

before
Location: http://www.google.com/
after

第二次尝试

$location = `curl -m 5 -sI 216.58.219.206 | grep "Location:"`;
$location =~ s/\n//g;
print "before\n";
print "$location";
print "after\n";

输出,仍然无法正常工作。

before
Location: http://www.google.com/
after

原始Shell输出

[user@localhost dir]# curl -m 5 -sI 216.58.219.206 | grep "Location:"
Location: http://www.google.com/
[user@localhost dir]#

也不工作,我仍然看到一个新线。 我错过了什么吗?

2 个答案:

答案 0 :(得分:3)

卷曲响应以 \ r \ n 而不是仅仅 \ n 返回。

使用 od (八进制转储)自己查看( -c 表示显示字符):

curl -m 5 -sI 216.58.219.206 | grep Location: | od -c
0000000   L   o   c   a   t   i   o   n   :       h   t   t   p   :   /
0000020   /   w   w   w   .   g   o   o   g   l   e   .   c   o   m   /
0000040  \r  \n
0000042

您需要删除这两个字符。

$location =~ s|\s*$||;  # Remove all trailing whitespace

答案 1 :(得分:0)

您可以使用tr

删除制表符,空格,换行符和回车符
curl -m 5 -sI 216.58.219.206 | grep Location: | tr -d '\011\012\040'